From 68f3e45b0c9570e4bdf01147f606f04bda6be310 Mon Sep 17 00:00:00 2001 From: Qrius Date: Tue, 6 May 2025 12:57:55 +0200 Subject: Move more class vars into macro dict, fix some typos causing metadata to be defined wrong, remove more py_global_env --- src/smp/macro_processor.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src/smp/macro_processor.py') diff --git a/src/smp/macro_processor.py b/src/smp/macro_processor.py index 4c8107c..a473db4 100644 --- a/src/smp/macro_processor.py +++ b/src/smp/macro_processor.py @@ -74,10 +74,7 @@ class MacroProcessor: end_quote: str = '"%' prefix: str = "" - file = None - expansion_stack: list[Any] - file_stack: list[Any] def __init__(self, prefix=""): self.macros = dict() @@ -90,7 +87,6 @@ class MacroProcessor: self.expansion_stack = ( list() ) # This probably needs some magic at some point later - self.file_stack = list() # This probably needs some magic at some point later self._define_builtins(self.macros) self._define_builtins(self.py_local_env_alt) @@ -112,6 +108,8 @@ class MacroProcessor: def _define_builtins(self, env): self._import_symbols(smp.builtins, env, function_prefix="smp_builtin_") + env[f"{self.prefix}file"] = None + env[f"{self.prefix}file_stack"] = [] env[f"{self.prefix}macro_processor"] = self env[f"{self.prefix}template_stack"] = [] env[f"{self.prefix}template_stack_content"] = [] @@ -142,7 +140,7 @@ class MacroProcessor: return self.macros.get(f"{sub_prefix}{macro_name}", default) def _define_metadata(self, macro_name, macro_value): - sub_prefix = (self._get_macro_builtin("metadata_prefix"),) + sub_prefix = (self._get_macro_builtin("metadata_prefix")) self.define_macro(f"{sub_prefix}{macro_name}", macro_value) def log_warning(self, message): @@ -238,14 +236,14 @@ class MacroProcessor: self.expansion_stack.pop() def _enter_file_frame(self, filename, linenr, template): - self.file_stack.append([filename, linenr, 0]) + self._get_macro_builtin("file_stack").append([filename, linenr, 0]) def _pop_file_frame(self): - self.file_stack.pop() + self._get_macro_builtin("file_stack").pop() def _stack(self): out = "- File stack ------\n" - for i, frame in enumerate(self.file_stack): + for i, frame in enumerate(self._get_macro_builtin("file_stack")): out += f" {' ' * i} {frame[0]}:{frame[1]}\n" out += "\n- Macro stack -----\n" for i, frame in enumerate(self.expansion_stack): @@ -283,9 +281,9 @@ class MacroProcessor: but may also be faster (stream or mutable string) """ if file is not None: - self.file = file - if (file is None) and (self.file is not None): - file = self.file + self._define_macro_builtin("file", file) + if (file is None) and (self._get_macro_builtin("file") is not None): + file = self._get_macro_builtin("file") output: list[str] = [] state = ParserState.NORMAL @@ -336,7 +334,7 @@ class MacroProcessor: output.extend(f"\n#line {linenr} {file}") linenr += 1 linestart = i + 1 - self.file_stack[-1][1] = linenr + self._get_macro_builtin("file_stack")[-1][1] = linenr if self._debug_on(5): print( -- cgit v1.2.3