diff options
author | Qrius <[email protected]> | 2025-03-10 13:28:03 +0100 |
---|---|---|
committer | Qrius <[email protected]> | 2025-03-10 13:28:06 +0100 |
commit | 44fecdfe41596acba584cdc9a93b67e92a3f1f0d (patch) | |
tree | d261bb4b49b9ddf3db6dd5ef0786611f5306997c /src/smp/macro_processor.py | |
parent | 12d07e873ea21263fbacb5e0193d38893ceff846 (diff) | |
download | skaldpress-44fecdfe41596acba584cdc9a93b67e92a3f1f0d.tar.gz skaldpress-44fecdfe41596acba584cdc9a93b67e92a3f1f0d.zip |
Finish feature parity
Diffstat (limited to 'src/smp/macro_processor.py')
-rw-r--r-- | src/smp/macro_processor.py | 27 |
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() |