diff options
author | Simon Sapin <simon.sapin@exyr.org> | 2019-07-29 18:57:20 +0200 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2019-07-30 08:37:33 +0200 |
commit | 0215d09ccbfed85c91605dedbb175dc9a96ba0ab (patch) | |
tree | 748fa7b4806ce88d8d1376b95f386812bede0383 /components/script/dom/bindings/codegen/GlobalGen.py | |
parent | ddb4e369ddb8d9bb20142d34e320370cd3be196f (diff) | |
download | servo-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/script/dom/bindings/codegen/GlobalGen.py')
-rw-r--r-- | components/script/dom/bindings/codegen/GlobalGen.py | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/components/script/dom/bindings/codegen/GlobalGen.py b/components/script/dom/bindings/codegen/GlobalGen.py index 9fe736e71fd..1850a41d5f3 100644 --- a/components/script/dom/bindings/codegen/GlobalGen.py +++ b/components/script/dom/bindings/codegen/GlobalGen.py @@ -29,12 +29,10 @@ def generate_file(config, name, filename): def main(): # Parse arguments. from optparse import OptionParser - usageString = "usage: %prog [options] configFile outputdir webidldir cssProperties.json [files]" + usageString = "usage: %prog [options] configFile outputdir webidldir cssProperties.json docServoDir [files]" o = OptionParser(usage=usageString) o.add_option("--cachedir", dest='cachedir', default=None, help="Directory in which to cache lex/parse tables.") - o.add_option("--only-html", dest='only_html', action="store_true", - help="Only generate HTML from WebIDL inputs") o.add_option("--filelist", dest='filelist', default=None, help="A file containing the list (one per line) of webidl files to process.") (options, args) = o.parse_args() @@ -46,6 +44,7 @@ def main(): outputdir = args[1] baseDir = args[2] css_properties_json = args[3] + doc_servo = args[4] if options.filelist is not None: fileList = [l.strip() for l in open(options.filelist).xreadlines()] else: @@ -63,34 +62,30 @@ def main(): parserResults = parser.finish() - if not options.only_html: - # Write the parser results out to a pickle. - resultsPath = os.path.join(outputdir, 'ParserResults.pkl') - with open(resultsPath, 'wb') as resultsFile: - cPickle.dump(parserResults, resultsFile, -1) + # Write the parser results out to a pickle. + resultsPath = os.path.join(outputdir, 'ParserResults.pkl') + with open(resultsPath, 'wb') as resultsFile: + cPickle.dump(parserResults, resultsFile, -1) # Load the configuration. config = Configuration(configFile, parserResults) to_generate = [ - ('SupportedDomApis', 'apis.html'), + ('PrototypeList', 'PrototypeList.rs'), + ('RegisterBindings', 'RegisterBindings.rs'), + ('InterfaceObjectMap', 'InterfaceObjectMap.rs'), + ('InterfaceObjectMapData', 'InterfaceObjectMapData.json'), + ('InterfaceTypes', 'InterfaceTypes.rs'), + ('InheritTypes', 'InheritTypes.rs'), + ('Bindings', os.path.join('Bindings', 'mod.rs')), + ('UnionTypes', 'UnionTypes.rs'), ] - if not options.only_html: - to_generate = [ - ('PrototypeList', 'PrototypeList.rs'), - ('RegisterBindings', 'RegisterBindings.rs'), - ('InterfaceObjectMap', 'InterfaceObjectMap.rs'), - ('InterfaceObjectMapData', 'InterfaceObjectMapData.json'), - ('InterfaceTypes', 'InterfaceTypes.rs'), - ('InheritTypes', 'InheritTypes.rs'), - ('Bindings', os.path.join('Bindings', 'mod.rs')), - ('UnionTypes', 'UnionTypes.rs'), - ] - for name, filename in to_generate: generate_file(config, name, os.path.join(outputdir, filename)) + generate_file(config, 'SupportedDomApis', os.path.join(doc_servo, 'apis.html')) + def add_css_properties_attributes(webidl_files, css_properties_json, parser): for filename in webidl_files: @@ -102,10 +97,11 @@ def add_css_properties_attributes(webidl_files, css_properties_json, parser): css_properties = json.load(open(css_properties_json, "rb")) idl = "partial interface CSSStyleDeclaration {\n%s\n};\n" % "\n".join( " [%sCEReactions, SetterThrows] attribute [TreatNullAs=EmptyString] DOMString %s;" % ( - ('Pref="%s", ' % pref if pref else ""), + ('Pref="%s", ' % data["pref"] if data["pref"] else ""), attribute_name ) - for (property_name, pref) in css_properties + for (kind, properties_list) in sorted(css_properties.items()) + for (property_name, data) in sorted(properties_list.items()) for attribute_name in attribute_names(property_name) ) parser.parse(idl.encode("utf-8"), "CSSStyleDeclaration_generated.webidl") |