Skip to content

Commit 895a0ab

Browse files
committed
Replace global()
1 parent a392333 commit 895a0ab

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

libsast/core_matcher/matchers.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def get_pos(match):
1414

1515

1616
# Cache compiled regex patterns
17-
@lru_cache(maxsize=128)
17+
@lru_cache(maxsize=256)
1818
def get_compiled_pattern(pattern):
1919
"""Compile and cache regex patterns."""
2020
return re.compile(pattern)
@@ -23,17 +23,36 @@ def get_compiled_pattern(pattern):
2323
class MatchCommand:
2424
def __init__(self):
2525
self.patterns = {}
26+
# Dictionary to map pattern names to their corresponding classes
27+
self.available_patterns = {
28+
'Regex': Regex,
29+
'RegexAnd': RegexAnd,
30+
'RegexOr': RegexOr,
31+
'RegexAndNot': RegexAndNot,
32+
'RegexAndOr': RegexAndOr,
33+
}
2634

2735
def _find_match(self, pattern_name, content, rule):
28-
pattern_class = self.patterns.get(pattern_name) or globals()[pattern_name]()
36+
pattern_class = self.patterns.get(
37+
pattern_name) or self._get_pattern_class(pattern_name)
2938
self.patterns.setdefault(pattern_name, pattern_class)
39+
40+
# Apply case transformation if specified in the rule
3041
case = rule.get('input_case')
3142
if case == 'lower':
3243
content = content.lower()
3344
elif case == 'upper':
3445
content = content.upper()
46+
47+
# Perform search
3548
return pattern_class._perform_search(content, rule)
3649

50+
def _get_pattern_class(self, pattern_name):
51+
"""Get pattern class from the available patterns dictionary."""
52+
if pattern_name in self.available_patterns:
53+
return self.available_patterns[pattern_name]()
54+
raise ValueError(f"Pattern '{pattern_name}' is not recognized.")
55+
3756

3857
class MatchStrategy(ABC):
3958
@abstractmethod

0 commit comments

Comments
 (0)