aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/skaldpress/main.py4
-rw-r--r--src/smp/builtins.py15
-rw-r--r--src/smp/macro_processor.py2
3 files changed, 13 insertions, 8 deletions
diff --git a/src/skaldpress/main.py b/src/skaldpress/main.py
index b0b1784..7d95a12 100644
--- a/src/skaldpress/main.py
+++ b/src/skaldpress/main.py
@@ -15,7 +15,7 @@ from skaldpress.filelist import (
)
from smp.builtins import (
_smp_builtin_read,
- smp_builtin_add_metadata,
+ _smp_builtin_add_metadata,
)
import skaldpress.macros
from time import perf_counter
@@ -38,7 +38,7 @@ def macro_processor_initialize(metadata, old_macro_processor, additional_state=N
macro_processor._import_symbols(
skaldpress.macros, macro_processor.macros, function_prefix="sp_"
)
- smp_builtin_add_metadata(macro_processor, metadata, overwrite=False)
+ _smp_builtin_add_metadata(macro_processor, metadata, overwrite=False)
if additional_state:
for key, value in additional_state.items():
macro_processor.define_macro(key, value)
diff --git a/src/smp/builtins.py b/src/smp/builtins.py
index f06df4e..30ebbdc 100644
--- a/src/smp/builtins.py
+++ b/src/smp/builtins.py
@@ -68,7 +68,9 @@ def smp_builtin_ifneq(macro_processor, a, b, iftrue, iffalse=None):
return ""
-def smp_builtin_add_metadata(macro_processor, metadata: dict[str, Any], overwrite=True):
+def _smp_builtin_add_metadata(
+ macro_processor, metadata: dict[str, Any], overwrite=True
+):
"""
Not added to macro_processor as macro
"""
@@ -100,7 +102,7 @@ def smp_builtin_parse_leading_yaml(macro_processor, content):
Not added to macro_processor as macro
"""
metadata, content = extract_parse_yaml_metadata(content)
- smp_builtin_add_metadata(macro_processor, metadata, overwrite=True)
+ _smp_builtin_add_metadata(macro_processor, metadata, overwrite=True)
return content
@@ -126,8 +128,11 @@ def smp_builtin_array_push(macro_processor, array_name, *values):
raise Exception(f"{array_name} is not a macro")
if not isinstance(macro_processor.macros[array_name], list):
raise Exception(f"{array_name} is not a array")
- for value in values:
- macro_processor.macros[array_name].append(value)
+ values = [macro_processor.process_input(x) for x in values]
+ if len(values) > 1:
+ macro_processor.macros[array_name].append(values)
+ else:
+ macro_processor.macros[array_name].append(values[0])
return ""
@@ -213,7 +218,7 @@ def _smp_builtin_read(macro_processor, filename, template_content=None, inline=F
metadata = {}
if macro_processor._get_macro_with_prefix("parse_file_yaml"):
metadata, file_content = extract_parse_yaml_metadata(file_content)
- smp_builtin_add_metadata(macro_processor, metadata, overwrite=True)
+ _smp_builtin_add_metadata(macro_processor, metadata, overwrite=True)
extension = os.path.splitext(filename)[1][1:] or ""
if not inline:
diff --git a/src/smp/macro_processor.py b/src/smp/macro_processor.py
index 77641e7..0e62494 100644
--- a/src/smp/macro_processor.py
+++ b/src/smp/macro_processor.py
@@ -162,7 +162,7 @@ class MacroProcessor:
expanded = macro
for i, arg in enumerate(args):
placeholder = f"${i}"
- expanded = macro.replace(placeholder, arg)
+ expanded = expanded.replace(placeholder, arg)
res = self.process_input(expanded)
return res