@@ -27,23 +27,23 @@ def r_types(types):
2727 return "|" .join (types )
2828
2929
30+ def _get_scope_pattern (scopes : Optional [List [str ]] = None ):
31+ scopes_str = r_types (scopes )
32+ escaped_delimiters = list (map (re .escape , [":" , "," ])) # type: ignore
33+ delimiters_pattern = r_types (escaped_delimiters )
34+ return rf"\(\s*(?:{ scopes_str } )(?:\s*(?:{ delimiters_pattern } )\s*(?:{ scopes_str } ))*\s*\)"
35+
36+
3037def r_scope (optional = True , scopes : Optional [List [str ]] = None ):
3138 """Regex str for an optional (scope)."""
3239
40+ if scopes :
41+ scopes_pattern = _get_scope_pattern (scopes )
42+ return scopes_pattern
43+
3344 if optional :
34- if scopes :
35- scopes_str = r_types (scopes )
36- # delims_str = r_types([":", ",", "-"])
37- escaped_delimiters = list (map (re .escape , [":" , "," ])) # type: ignore
38- delimiters_pattern = r_types (escaped_delimiters )
39- return rf"\(\s*(?:{ scopes_str } )(?:\s*(?:{ delimiters_pattern } )\s*(?:{ scopes_str } ))*\s*\)"
4045 return r"(\([\w \/:,-]+\))?"
4146 else :
42- if scopes :
43- scopes_str = r_types (scopes )
44- escaped_delimiters = list (map (re .escape , [":" , "," ])) # type: ignore
45- delimiters_pattern = r_types (escaped_delimiters )
46- return rf"\(\s*(?:{ scopes_str } )(?:\s*(?:{ delimiters_pattern } )\s*(?:{ scopes_str } ))*\s*\)"
4747 return r"(\([\w \/:,-]+\))"
4848
4949
0 commit comments