aboutsummaryrefslogtreecommitdiffstats
path: root/components/style/properties/build.py
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2019-07-29 18:57:20 +0200
committerSimon Sapin <simon.sapin@exyr.org>2019-07-30 08:37:33 +0200
commit0215d09ccbfed85c91605dedbb175dc9a96ba0ab (patch)
tree748fa7b4806ce88d8d1376b95f386812bede0383 /components/style/properties/build.py
parentddb4e369ddb8d9bb20142d34e320370cd3be196f (diff)
downloadservo-0215d09ccbfed85c91605dedbb175dc9a96ba0ab.tar.gz
servo-0215d09ccbfed85c91605dedbb175dc9a96ba0ab.zip
Generate apis.html and css-properties.json for docs as part of crates’ build scripts
… rather than as an extra step after `cargo doc`. This helps always using the correct set of CSS properties (for layout 2013 v.s. 2020).
Diffstat (limited to 'components/style/properties/build.py')
-rw-r--r--components/style/properties/build.py43
1 files changed, 20 insertions, 23 deletions
diff --git a/components/style/properties/build.py b/components/style/properties/build.py
index 186018e99a4..45d8fa676ab 100644
--- a/components/style/properties/build.py
+++ b/components/style/properties/build.py
@@ -101,21 +101,32 @@ def main():
pref_attr = "servo_2013_pref"
if engine == "servo-2020":
pref_attr = "servo_2020_pref"
- names_and_prefs = [
- (prop.name, getattr(prop, pref_attr))
- for p in properties.longhands + properties.shorthands
- if p.enabled_in_content()
- for prop in [p] + p.alias
- ]
- write(OUT_DIR, "css_properties.json", json.dumps(names_and_prefs, indent=4))
+ properties_dict = {
+ kind: {
+ p.name: {
+ "pref": getattr(p, pref_attr)
+ }
+ for prop in properties_list
+ if prop.enabled_in_content()
+ for p in [prop] + prop.alias
+ }
+ for kind, properties_list in [
+ ("longhands", properties.longhands),
+ ("shorthands", properties.shorthands)
+ ]
+ }
+ as_html = render(os.path.join(BASE, "properties.html.mako"), properties=properties_dict)
+ as_json = json.dumps(properties_dict, indent=4, sort_keys=True)
+ doc_servo = os.path.join(BASE, "..", "..", "..", "target", "doc", "servo")
+ write(doc_servo, "css-properties.html", as_html)
+ write(doc_servo, "css-properties.json", as_json)
+ write(OUT_DIR, "css-properties.json", as_json)
elif output == "geckolib":
if len(sys.argv) < 4:
abort(usage)
template = sys.argv[3]
header = render(template, data=properties)
sys.stdout.write(header)
- elif output == "html":
- write_html(properties)
def abort(message):
@@ -153,19 +164,5 @@ def write(directory, filename, content):
abort("Found \"{}\" in {} ({})".format(python_addr.group(0), filename, full_path))
-def write_html(properties):
- properties = dict(
- (p.name, {
- "flag": p.servo_2013_pref,
- "shorthand": hasattr(p, "sub_properties")
- })
- for p in properties.longhands + properties.shorthands
- )
- doc_servo = os.path.join(BASE, "..", "..", "..", "target", "doc", "servo")
- 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__":
main()