diff options
-rw-r--r-- | src/smp/builtins.py | 5 | ||||
-rw-r--r-- | src/smp/macro_processor.py | 22 |
2 files changed, 10 insertions, 17 deletions
diff --git a/src/smp/builtins.py b/src/smp/builtins.py index 9835620..36cc380 100644 --- a/src/smp/builtins.py +++ b/src/smp/builtins.py @@ -311,10 +311,5 @@ def smp_builtin_dumpenv(macro_processor): out += "━ Macros ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" for key, val in macro_processor.macros.items(): out += f"{repr(key)}: {repr(val)}\n" - out += "━ Globals ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n" - for key, val in macro_processor.py_global_env.items(): - if key == "__builtins__": - continue - out += f"{repr(key)}: {repr(val)}\n" out += "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" return out 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( |