aboutsummaryrefslogtreecommitdiff
path: root/src/smp/macro_processor.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/smp/macro_processor.py')
-rw-r--r--src/smp/macro_processor.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/smp/macro_processor.py b/src/smp/macro_processor.py
index bda6c6f..68fd726 100644
--- a/src/smp/macro_processor.py
+++ b/src/smp/macro_processor.py
@@ -31,6 +31,30 @@ def macro_name_clean(macro_name: str) -> str:
return macro_name
+def seek(input: str, start: int, target: str) -> int | None:
+ """Seek for a value in a string, consider using startswith instead"""
+ from warnings import warn
+
+ warn(
+ "seek should be considered replaced with str.startswith",
+ DeprecationWarning,
+ stacklevel=2,
+ )
+ input_end = len(input)
+ target_end = len(target)
+
+ if input_end < start + target_end:
+ return None
+
+ i = 0
+ while i < len(target):
+ if input[start + i] != target[i]:
+ return None
+ i += 1
+
+ return start + target_end
+
+
class MacroProcessor:
"""All currently defined macros in this MacroProcessor"""
@@ -46,6 +70,9 @@ class MacroProcessor:
special_macros: dict[str, tuple[Any, Any]]
+ start_quote: str = '%"'
+ end_quote: str = '"%'
+
def __init__(self, prefix=""):
self.macros = dict()
self.macro_invocations = list()