fune/layout/style/GenerateCSSPropertyID.py
Xidorn Quan e723f6b291 Bug 1454831 - Generate nsCSSPropertyID.h from data file directly. r=emilio
MozReview-Commit-ID: CcX2uzgjWFo

--HG--
rename : layout/style/nsCSSPropertyID.h => layout/style/nsCSSPropertyID.h.in
extra : rebase_source : 441f22dbe019f6ebc879fd21c0dc3d0f6f9cb63a
2018-04-18 19:39:51 +10:00

35 lines
1.3 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 string
def generate(output, template, dataFile):
with open(template, "r") as f:
template = string.Template(f.read())
with open(dataFile, "r") as f:
data = eval(f.read())
longhand_count = 0
shorthand_count = 0
alias_count = 0
property_ids = []
for name, method, id, flags, pref, prototype in data:
if prototype != "alias":
if prototype == "longhand":
assert shorthand_count == 0
longhand_count += 1
else:
assert alias_count == 0
shorthand_count += 1
property_ids.append("eCSSProperty_{}".format(id))
else:
alias_count += 1
property_ids.append("eCSSPropertyAlias_{}".format(id[0]))
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],
}))