diff options
author | Qrius <[email protected]> | 2025-04-24 10:02:41 +0200 |
---|---|---|
committer | Qrius <[email protected]> | 2025-04-24 10:02:43 +0200 |
commit | c741ed92778812beef7ea57cb073745b28ec046a (patch) | |
tree | 14f843980f78aa54fe11f1922b1ece201e5174f7 /src | |
parent | 82df20d90a978535024cc2b8b87c7a2cfcfc1f7b (diff) | |
download | skaldpress-c741ed92778812beef7ea57cb073745b28ec046a.tar.gz skaldpress-c741ed92778812beef7ea57cb073745b28ec046a.zip |
Fix inconsistencies with expansion of text strings and the array macros
Diffstat (limited to 'src')
-rw-r--r-- | src/skaldpress/main.py | 4 | ||||
-rw-r--r-- | src/smp/builtins.py | 15 | ||||
-rw-r--r-- | src/smp/macro_processor.py | 2 |
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 |