summaryrefslogtreecommitdiff
path: root/tools/lib/python
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>2026-03-02 17:40:58 +0100
committerJonathan Corbet <corbet@lwn.net>2026-03-03 10:47:25 -0700
commit962bdc440df58008e0319d6cbe08c4ca1193c112 (patch)
tree4e5847ba3e37758b68bf59f8d2e5c7c247ee047b /tools/lib/python
parent134468b0e2043efec4bd25dc6bcef238358a8111 (diff)
docs: kdoc_re: don't recompile NestedMatch regex every time
Store delimiters and its regex-compiled version as const vars. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <0cf2b72d4785aa8b727188b56688ff442d1c65ce.1772469446.git.mchehab+huawei@kernel.org>
Diffstat (limited to 'tools/lib/python')
-rw-r--r--tools/lib/python/kdoc/kdoc_re.py35
1 files changed, 22 insertions, 13 deletions
diff --git a/tools/lib/python/kdoc/kdoc_re.py b/tools/lib/python/kdoc/kdoc_re.py
index 0a7f12616f9fc..00afa5bccd6dd 100644
--- a/tools/lib/python/kdoc/kdoc_re.py
+++ b/tools/lib/python/kdoc/kdoc_re.py
@@ -99,6 +99,13 @@ class KernRe:
self.last_match = self.regex.search(string)
return self.last_match
+ def finditer(self, string):
+ """
+ Alias to re.finditer.
+ """
+
+ return self.regex.finditer(string)
+
def findall(self, string):
"""
Alias to re.findall.
@@ -134,6 +141,16 @@ class KernRe:
return self.last_match.groups()
+#: Nested delimited pairs (brackets and parenthesis)
+DELIMITER_PAIRS = {
+ '{': '}',
+ '(': ')',
+ '[': ']',
+}
+
+#: compiled delimiters
+RE_DELIM = KernRe(r'[\{\}\[\]\(\)]')
+
class NestedMatch:
"""
@@ -183,14 +200,6 @@ class NestedMatch:
#
# FOO(arg1, arg2, arg3)
- DELIMITER_PAIRS = {
- '{': '}',
- '(': ')',
- '[': ']',
- }
-
- RE_DELIM = re.compile(r'[\{\}\[\]\(\)]')
-
def _search(self, regex, line):
"""
Finds paired blocks for a regex that ends with a delimiter.
@@ -220,13 +229,13 @@ class NestedMatch:
escape = False
d = line[offset - 1]
- if d not in self.DELIMITER_PAIRS:
+ if d not in DELIMITER_PAIRS:
continue
- end = self.DELIMITER_PAIRS[d]
+ end = DELIMITER_PAIRS[d]
stack.append(end)
- for match in self.RE_DELIM.finditer(line[offset:]):
+ for match in RE_DELIM.finditer(line[offset:]):
pos = match.start() + offset
d = line[pos]
@@ -247,8 +256,8 @@ class NestedMatch:
string_char = d
continue
- if d in self.DELIMITER_PAIRS:
- end = self.DELIMITER_PAIRS[d]
+ if d in DELIMITER_PAIRS:
+ end = DELIMITER_PAIRS[d]
stack.append(end)
continue