diff options
author | Trygve Aaberge <trygveaa@gmail.com> | 2022-10-02 19:16:00 +0200 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2022-10-02 20:25:17 +0200 |
commit | 236d22e364fe14c92b4407954332b3231b8a2b5f (patch) | |
tree | fc9125ed5ef06384a699b3cd3032aaa2fb079457 /doc | |
parent | 4d3a3c67aceb9e7ac84094df31a982819e722f73 (diff) | |
download | weechat-236d22e364fe14c92b4407954332b3231b8a2b5f.zip |
python: Include constant values in python stub
This is useful for two reasons:
1. When running unit tests for a script weechat needs to be mocked. By
having the constant values available in the stub file, they can be
loaded from that, instead of having to define the constants manually
for the mock.
2. If you log a constant value you have to look up what it means. This
makes it easier, in the same vein as PR #1824.
Diffstat (limited to 'doc')
-rwxr-xr-x | doc/python_stub.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/doc/python_stub.py b/doc/python_stub.py index 7778d9753..ba5f730c4 100755 --- a/doc/python_stub.py +++ b/doc/python_stub.py @@ -28,6 +28,7 @@ from pathlib import Path import re DOC_DIR = Path(__file__).resolve().parent / "en" +SRC_DIR = Path(__file__).resolve().parent.parent / "src" STUB_HEADER = """\ # @@ -56,11 +57,19 @@ def print_stub_constants() -> None: "string": "str", } constant_pattern = re.compile(CONSTANT_RE) - with open(DOC_DIR / "weechat_scripting.en.adoc", - encoding="utf-8") as scripting_file: + with open( + DOC_DIR / "weechat_scripting.en.adoc", encoding="utf-8" + ) as scripting_file, open( + SRC_DIR / "plugins" / "weechat-plugin.h", encoding="utf-8" + ) as plugin_header_file: scripting = scripting_file.read() + plugin_header = plugin_header_file.read() for match in constant_pattern.finditer(scripting): - print(f'{match["constant"]}: {types[match["type"]]}') + value_re = rf'^#define {match["constant"]} +(?P<value>[\w"-]+)$' + value_match = re.search(value_re, plugin_header, re.MULTILINE) + value = f' = {value_match["value"]}' if value_match else "" + + print(f'{match["constant"]}: {types[match["type"]]}{value}') def print_stub_functions() -> None: |