mirror of
https://github.com/servo/servo.git
synced 2025-06-23 16:44:33 +01:00
37 lines
1.1 KiB
Python
37 lines
1.1 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 os
|
|
import re
|
|
|
|
LICENSE = """\
|
|
/* 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/. */
|
|
|
|
/* automatically generated by check_bindings.py. */
|
|
|
|
"""
|
|
|
|
BINDINGS_PATH = os.path.join("..", "gecko_bindings")
|
|
INPUT_FILE = os.path.join(BINDINGS_PATH, "bindings.rs")
|
|
OUTPUT_FILE = os.path.join(BINDINGS_PATH, "check_bindings.rs")
|
|
|
|
TEMPLATE = """\
|
|
[ Servo_{name}, bindings::Servo_{name} ];
|
|
"""
|
|
|
|
with open(INPUT_FILE, "r") as bindings, open(OUTPUT_FILE, "w+") as tests:
|
|
tests.write(LICENSE)
|
|
tests.write("fn assert_types() {\n")
|
|
|
|
pattern = re.compile("fn\s*Servo_([_a-zA-Z0-9]+)\s*\(")
|
|
|
|
for line in bindings:
|
|
match = pattern.search(line)
|
|
|
|
if match:
|
|
tests.write(TEMPLATE.format(name=match.group(1)))
|
|
|
|
tests.write("}\n")
|