diff --git a/components/style/list_properties.py b/components/style/list_properties.py
index 63bbe247511..34043be888b 100644
--- a/components/style/list_properties.py
+++ b/components/style/list_properties.py
@@ -21,4 +21,21 @@ properties = dict(
})
for p in template.module.LONGHANDS + template.module.SHORTHANDS
)
-print(json.dumps(properties, indent=4))
+
+json_dump = json.dumps(properties, indent=4)
+
+#
+# Resolve path to doc directory and write CSS properties and JSON.
+#
+servo_doc_path = os.path.abspath(os.path.join(style, '../', '../', 'target', 'doc', 'servo'))
+
+# Ensure ./target/doc/servo exists
+if not os.path.exists(servo_doc_path):
+ os.makedirs(servo_doc_path)
+
+with open(os.path.join(servo_doc_path, 'css-properties.json'), "w") as out_file:
+ out_file.write(json_dump)
+
+html_template = Template(filename=os.path.join(style, "properties.html.mako"), input_encoding='utf8')
+with open(os.path.join(servo_doc_path, 'css-properties.html'), "w") as out_file:
+ out_file.write(html_template.render(properties=properties))
diff --git a/components/style/properties.html.mako b/components/style/properties.html.mako
new file mode 100644
index 00000000000..d06524d3e13
--- /dev/null
+++ b/components/style/properties.html.mako
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+ Supported CSS properties - servo - Rust
+
+
+
+
+
+
+ CSS properties currently supported in Servo
+
+
+
+ Property |
+ Flag |
+ Shorthand |
+
+ % for prop in properties:
+
+ ${prop} |
+ ${properties[prop]['flag']} |
+ ${properties[prop]['shorthand']} |
+
+ % endfor
+
+
+
+
+
diff --git a/etc/ci/upload_docs.sh b/etc/ci/upload_docs.sh
index 240b20d7762..2aea0fcea00 100755
--- a/etc/ci/upload_docs.sh
+++ b/etc/ci/upload_docs.sh
@@ -12,5 +12,7 @@ cd "$(dirname $0)/../.."
# etc/doc.servo.org/index.html overwrites $(mach rust-root)/doc/index.html
cp etc/doc.servo.org/* target/doc/
+python components/style/list_properties.py
+
ghp-import -n target/doc
git push -qf https://${TOKEN}@github.com/servo/doc.servo.org.git gh-pages
diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py
index b99dd147b9a..acfce6157cf 100644
--- a/python/servo/testing_commands.py
+++ b/python/servo/testing_commands.py
@@ -163,10 +163,17 @@ class MachCommands(CommandBase):
@CommandArgument('test_name', nargs=argparse.REMAINDER,
help="Only run tests that match this pattern or file path")
def test_unit(self, test_name=None, package=None):
- properties = json.loads(subprocess.check_output([
+ subprocess.check_output([
sys.executable,
path.join(self.context.topdir, "components", "style", "list_properties.py")
- ]))
+ ])
+
+ this_file = os.path.dirname(__file__)
+ servo_doc_path = os.path.abspath(os.path.join(this_file, '../', '../', 'target', 'doc', 'servo'))
+
+ with open(os.path.join(servo_doc_path, 'css-properties.json'), 'r') as property_file:
+ properties = json.loads(property_file.read())
+
assert len(properties) >= 100
assert "margin-top" in properties
assert "margin" in properties