gecko-dev/layout/style/GenerateCSSPropertyID.py
Xidorn Quan 7db648bdec Bug 1454591 part 1 - Generate more structured data in ServoCSSPropList.py. r=heycam
This patch changes ServoCSSPropList.py to use classes for properties.
This allows extending the data in the file without needing to update all
users of this file.

Sorting in GenerateCSSPropsGenerated.py is removed because the data file
has the right order already.

MozReview-Commit-ID: D74bItCfpPH

--HG--
extra : rebase_source : e0138c255f77515f491496fcb8680686362f4e9e
2018-05-04 13:44:51 +10:00

36 lines
1.2 KiB
Python

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import runpy
import string
def generate(output, template, dataFile):
with open(template, "r") as f:
template = string.Template(f.read())
data = runpy.run_path(dataFile)["data"]
longhand_count = 0
shorthand_count = 0
alias_count = 0
property_ids = []
for prop in data:
if prop.type() != "alias":
if prop.type() == "longhand":
assert shorthand_count == 0
longhand_count += 1
else:
assert alias_count == 0
shorthand_count += 1
property_ids.append("eCSSProperty_{}".format(prop.id))
else:
alias_count += 1
property_ids.append("eCSSPropertyAlias_{}".format(prop.alias_id))
output.write("/* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT */\n\n")
output.write(template.substitute({
"property_ids": "\n".join(" {},".format(p) for p in property_ids),
"longhand_count": property_ids[longhand_count],
"shorthand_count": property_ids[longhand_count + shorthand_count],
}))