44from griffe .dataclasses import Docstring
55from griffe .docstrings import Parser
66
7+ from mkdocstrings_handlers .vba .regex import re_signature , re_arg
78from mkdocstrings_handlers .vba .types import (
89 VbaArgumentInfo ,
910 VbaSignatureInfo ,
@@ -83,15 +84,7 @@ def parse_args(args: str) -> Generator[VbaArgumentInfo, None, None]:
8384 if not len (arg ):
8485 continue
8586
86- match = re .match (
87- r"^((?P<optional>Optional) +)?"
88- r"((?P<modifier>ByVal|ByRef) +)?"
89- r"(?P<name>[A-Z_][A-Z0-9_]*)"
90- r"( +As +(?P<type>[A-Z_][A-Z0-9_]*))?"
91- r"( *= *(?P<default>.*))?$" ,
92- arg ,
93- re .IGNORECASE ,
94- )
87+ match = re_arg .fullmatch (arg )
9588
9689 if match is None :
9790 raise RuntimeError (f"Failed to parse argument: { arg } " )
@@ -112,15 +105,7 @@ def parse_signature(line: str) -> VbaSignatureInfo:
112105 """
113106 line = re .sub (r"'.*$" , "" , line ).strip () # Strip comment and whitespace.
114107
115- # https://regex101.com/r/BclPPV/1
116- match = re .match (
117- r"^((?P<visibility>Private|Public) +)?"
118- r"(?P<type>Sub|Function|Property (Let|Get)) *"
119- r"(?P<name>[A-Z_][A-Z0-9_]*)\( *(?P<args>[A-Z0-9_ ,=]*)\)"
120- r"( +As +(?P<returnType>[A-Z_][A-Z0-9_]*))?$" ,
121- line ,
122- re .IGNORECASE ,
123- )
108+ match = re_signature .fullmatch (line )
124109
125110 if match is None :
126111 raise RuntimeError (f"Failed to parse signature: { line } " )
0 commit comments