diff --git a/src/evaluate.rs b/src/evaluate.rs index aecd3e5..1240a92 100644 --- a/src/evaluate.rs +++ b/src/evaluate.rs @@ -258,8 +258,10 @@ fn evaluate_template(data: &Value, record: Pair) -> Result { diff --git a/src/grammar/template.pest b/src/grammar/template.pest index 080d5b5..df12c13 100644 --- a/src/grammar/template.pest +++ b/src/grammar/template.pest @@ -47,7 +47,7 @@ end_template = { linear_whitespace* ~ start_marker ~ whitespace* ~ keyword_end ~ if_elif_else_template = { if_template ~ sub_template ~ (elif_template ~ sub_template)* ~ (else_template ~ sub_template)? ~ end_template } for_template = { linear_whitespace* ~ start_marker ~ whitespace* ~ keyword_for ~ whitespace+ ~ property ~ whitespace+ ~ "in" ~ whitespace+ ~ expression ~ whitespace* ~ end_marker ~ vertical_whitespace? } with_template = { linear_whitespace* ~ start_marker ~ whitespace* ~ keyword_with ~ whitespace+ ~ property ~ whitespace+ ~ "=" ~ whitespace+ ~ expression ~ whitespace* ~ end_marker ~ vertical_whitespace? ~ sub_template ~ end_template } -for_else_template = { for_template ~ sub_template ~ else_template? ~ sub_template ~ end_template } +for_else_template = { for_template ~ sub_template ~ (else_template ~ sub_template)? ~ end_template } comment = { comment_start_marker ~ (!comment_end_marker ~ ANY)+ ~ comment_end_marker ~ vertical_whitespace? } debug_template = { start_marker ~ whitespace* ~ keyword_debug ~ whitespace+ ~ expression ~ whitespace* ~ end_marker ~ vertical_whitespace? } template = { comment | debug_template | if_elif_else_template | for_else_template | with_template | expression_template } diff --git a/tests/configuration/vlan.yml b/tests/configuration/vlan.yml index a687083..5133fdb 100644 --- a/tests/configuration/vlan.yml +++ b/tests/configuration/vlan.yml @@ -1,4 +1,8 @@ vlans: - id: 10 - id: 20 - name: printer \ No newline at end of file + name: printer + - id: 30 + name: pc + - id: 40 + name: tablet \ No newline at end of file diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index 4b63720..a7c6d19 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -1064,12 +1064,17 @@ fn vlan_test() { assert .success() - .stdout(r#"vlan 10 -vlan 20 - name printer + .stdout(r#"vlans + vlan 10 + vlan 20 + name printer + vlan 30 + name pc + vlan 40 + name tablet "#) .stderr(is_match(r#"^\[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z INFO template\] Using template file 'tests/template/vlan.template' \[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z INFO template\] Using configuration file 'tests/configuration/vlan.yml' \[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z INFO template\] Parsing configuration using YAML format $"#).unwrap()); -} \ No newline at end of file +} diff --git a/tests/template/vlan.template b/tests/template/vlan.template index af8c682..a27b63a 100644 --- a/tests/template/vlan.template +++ b/tests/template/vlan.template @@ -1,6 +1,7 @@ -{% for vlan in vlans %} -vlan {% vlan.id %} - {% if vlan.name %} - name {% vlan.name %} - {% end %} -{% end %} \ No newline at end of file +vlans + {% for vlan in vlans %} + vlan {% vlan.id %} + {% if vlan.name %} + name {% vlan.name %} + {% end %} +{% end %}