2018-04-18 12:39:51 +03:00
|
|
|
# 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/.
|
|
|
|
|
2018-05-04 06:44:51 +03:00
|
|
|
import runpy
|
2018-04-18 12:39:51 +03:00
|
|
|
import string
|
|
|
|
|
|
|
|
def generate(output, template, dataFile):
|
|
|
|
with open(template, "r") as f:
|
|
|
|
template = string.Template(f.read())
|
2018-05-04 06:44:51 +03:00
|
|
|
data = runpy.run_path(dataFile)["data"]
|
2018-04-18 12:39:51 +03:00
|
|
|
|
|
|
|
longhand_count = 0
|
|
|
|
shorthand_count = 0
|
|
|
|
alias_count = 0
|
|
|
|
property_ids = []
|
2018-05-04 06:44:51 +03:00
|
|
|
for prop in data:
|
|
|
|
if prop.type() != "alias":
|
|
|
|
if prop.type() == "longhand":
|
2018-04-18 12:39:51 +03:00
|
|
|
assert shorthand_count == 0
|
|
|
|
longhand_count += 1
|
|
|
|
else:
|
|
|
|
assert alias_count == 0
|
|
|
|
shorthand_count += 1
|
2018-05-04 06:44:51 +03:00
|
|
|
property_ids.append("eCSSProperty_{}".format(prop.id))
|
2018-04-18 12:39:51 +03:00
|
|
|
else:
|
|
|
|
alias_count += 1
|
2018-05-04 06:44:51 +03:00
|
|
|
property_ids.append("eCSSPropertyAlias_{}".format(prop.alias_id))
|
2018-04-18 12:39:51 +03:00
|
|
|
|
|
|
|
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],
|
|
|
|
}))
|