From 44fecdfe41596acba584cdc9a93b67e92a3f1f0d Mon Sep 17 00:00:00 2001 From: Qrius Date: Mon, 10 Mar 2025 13:28:03 +0100 Subject: Finish feature parity --- src/smp/macro_processor.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/smp/macro_processor.py') 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() -- cgit v1.2.3