aboutsummaryrefslogtreecommitdiffstats
path: root/components/style/gecko
diff options
context:
space:
mode:
authorSylvestre Ledru <sylvestre@debian.org>2017-10-27 15:59:12 +0200
committerSylvestre Ledru <sylvestre@debian.org>2017-10-27 17:10:42 +0200
commit6d6a68b5b1319fc4a43fe824046ae3b67e2ae85d (patch)
treee7b68b41a8ad9b6eb20957e610cf9bd66a0c882b /components/style/gecko
parentd21657a9e5cfdb858c1a99a246001ceac05bb982 (diff)
downloadservo-6d6a68b5b1319fc4a43fe824046ae3b67e2ae85d.tar.gz
servo-6d6a68b5b1319fc4a43fe824046ae3b67e2ae85d.zip
Support multi lines declarations in the parsing of the Fx header files
For example, in dom/base/nsGkAtomList.h, we currently have: GK_ATOM(mouseWheel, "mouseWheel") // For discrete wheel events (e.g. not OSX magic mouse) but if we change to GK_ATOM(mouseWheel, "mouseWheel") // For discrete wheel events (e.g. not OSX magic mouse) The parser didn't handle the declaration
Diffstat (limited to 'components/style/gecko')
-rwxr-xr-xcomponents/style/gecko/regen_atoms.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/components/style/gecko/regen_atoms.py b/components/style/gecko/regen_atoms.py
index 778c694f4e4..d1e9280102b 100755
--- a/components/style/gecko/regen_atoms.py
+++ b/components/style/gecko/regen_atoms.py
@@ -39,14 +39,16 @@ def msvc32_symbolify(source, ident):
class GkAtomSource:
- PATTERN = re.compile('^(GK_ATOM)\((.+),\s*"(.*)"\)')
+ PATTERN = re.compile('^(GK_ATOM)\(([^,]*),[^"]*"([^"]*)"\)',
+ re.MULTILINE)
FILE = "include/nsGkAtomList.h"
CLASS = "nsGkAtoms"
TYPE = "nsStaticAtom"
class CSSPseudoElementsAtomSource:
- PATTERN = re.compile('^(CSS_PSEUDO_ELEMENT)\((.+),\s*"(.*)",')
+ PATTERN = re.compile('^(CSS_PSEUDO_ELEMENT)\(([^,]*),[^"]*"([^"]*)",',
+ re.MULTILINE)
FILE = "include/nsCSSPseudoElementList.h"
CLASS = "nsCSSPseudoElements"
# NB: nsICSSPseudoElement is effectively the same as a nsStaticAtom, but we need
@@ -55,7 +57,8 @@ class CSSPseudoElementsAtomSource:
class CSSAnonBoxesAtomSource:
- PATTERN = re.compile('^(CSS_ANON_BOX|CSS_NON_INHERITING_ANON_BOX|CSS_WRAPPER_ANON_BOX)\((.+),\s*"(.*)"\)')
+ PATTERN = re.compile('^(CSS_ANON_BOX|CSS_NON_INHERITING_ANON_BOX|CSS_WRAPPER_ANON_BOX)\(([^,]*),[^"]*"([^"]*)"\)',
+ re.MULTILINE)
FILE = "include/nsCSSAnonBoxList.h"
CLASS = "nsCSSAnonBoxes"
TYPE = "nsICSSAnonBoxPseudo"
@@ -123,10 +126,9 @@ def collect_atoms(objdir):
path = os.path.abspath(os.path.join(objdir, source.FILE))
print("cargo:rerun-if-changed={}".format(path))
with open(path) as f:
- for line in f.readlines():
- result = re.match(source.PATTERN, line)
- if result:
- atoms.append(Atom(source, result.group(1), result.group(2), result.group(3)))
+ content = f.read()
+ for result in source.PATTERN.finditer(content):
+ atoms.append(Atom(source, result.group(1), result.group(2), result.group(3)))
return atoms