summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2022-10-02 19:16:00 +0200
committerSébastien Helleu <flashcode@flashtux.org>2022-10-02 20:25:17 +0200
commit236d22e364fe14c92b4407954332b3231b8a2b5f (patch)
treefc9125ed5ef06384a699b3cd3032aaa2fb079457 /doc
parent4d3a3c67aceb9e7ac84094df31a982819e722f73 (diff)
downloadweechat-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-xdoc/python_stub.py15
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: