aboutsummaryrefslogtreecommitdiff
path: root/src/smp/macro_processor.py
diff options
context:
space:
mode:
authorQrius <[email protected]>2025-05-06 12:57:55 +0200
committerQrius <[email protected]>2025-05-06 12:57:57 +0200
commit68f3e45b0c9570e4bdf01147f606f04bda6be310 (patch)
tree7247d877a5a5545d2f8c22e8235dc73766d2dd64 /src/smp/macro_processor.py
parent01b6593a18645eabd6589437c020a98098b2c555 (diff)
downloadskaldpress-68f3e45b0c9570e4bdf01147f606f04bda6be310.tar.gz
skaldpress-68f3e45b0c9570e4bdf01147f606f04bda6be310.zip
Move more class vars into macro dict, fix some typos causing metadata to be defined wrong, remove more py_global_env
Diffstat (limited to 'src/smp/macro_processor.py')
-rw-r--r--src/smp/macro_processor.py22
1 files changed, 10 insertions, 12 deletions
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(