aboutsummaryrefslogtreecommitdiff
path: root/src/smp/builtins.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/smp/builtins.py')
-rw-r--r--src/smp/builtins.py15
1 files changed, 10 insertions, 5 deletions
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: