diff options
Diffstat (limited to 'components/style/properties/build.py')
-rw-r--r-- | components/style/properties/build.py | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/components/style/properties/build.py b/components/style/properties/build.py index ffc72a678d5..be2e372a240 100644 --- a/components/style/properties/build.py +++ b/components/style/properties/build.py @@ -13,21 +13,28 @@ sys.path.insert(0, os.path.join(BASE, "Mako-0.9.1.zip")) from mako import exceptions from mako.template import Template +import data + def main(): - usage = "Usage: %s [ servo | gecko ] [ rust | html ]" % sys.argv[0] + usage = "Usage: %s [ servo | gecko ] [ style-crate | geckolib | html ]" % sys.argv[0] if len(sys.argv) < 3: abort(usage) product = sys.argv[1] output = sys.argv[2] - if product not in ["servo", "gecko"] or output not in ["rust", "html"]: + if product not in ["servo", "gecko"] or output not in ["style-crate", "geckolib", "html"]: abort(usage) - template, rust = render("properties.mako.rs", PRODUCT=product) - if output == "rust": + properties = data.PropertiesData(product=product) + rust = render(os.path.join(BASE, "properties.mako.rs"), product=product, data=properties) + if output == "style-crate": + write(os.environ["OUT_DIR"], "properties.rs", rust) + if output == "geckolib": + template = os.path.join(BASE, "..", "..", "..", "ports", "geckolib", "properties.mako.rs") + rust = render(template, data=properties) write(os.environ["OUT_DIR"], "properties.rs", rust) elif output == "html": - write_html(template) + write_html(properties) def abort(message): @@ -35,11 +42,18 @@ def abort(message): sys.exit(1) -def render(name, **context): +def render(filename, **context): try: - template = Template(open(os.path.join(BASE, name), "rb").read(), input_encoding="utf8") - return template, template.render(**context).encode("utf8") + template = Template(open(filename, "rb").read(), + input_encoding="utf8", + strict_undefined=True, + filename=filename) + # Uncomment to debug generated Python code: + #write("/tmp", "mako_%s.py" % os.path.basename(filename), template.code) + return template.render(**context).encode("utf8") except: + # Uncomment to see a traceback in generated Python code: + #raise abort(exceptions.text_error_template().render().encode("utf8")) @@ -49,19 +63,18 @@ def write(directory, filename, content): open(os.path.join(directory, filename), "wb").write(content) -def write_html(template): +def write_html(properties): properties = dict( (p.name, { "flag": p.experimental, "shorthand": hasattr(p, "sub_properties") }) - for p in template.module.LONGHANDS + template.module.SHORTHANDS + for p in properties.longhands + properties.shorthands ) - _, html = render("properties.html.mako", properties=properties) - doc_servo = os.path.join(BASE, "..", "..", "..", "target", "doc", "servo") - write(doc_servo, "css-properties.json", json.dumps(properties, indent=4)) + html = render(os.path.join(BASE, "properties.html.mako"), properties=properties) write(doc_servo, "css-properties.html", html) + write(doc_servo, "css-properties.json", json.dumps(properties, indent=4)) if __name__ == "__main__": |