{{! Evaluate columns: - :parameter_name: customers rows: - rows: false columns: - :parameter_name: id :domain_element: customer_id_1 rows: false columns: false _comma: "," - :parameter_name: address rows: false columns: - :parameter_name: street _comma: "," rows: false columns: false :domain_element: customer_street_1 :domain_value: false - :parameter_name: city _comma: '' rows: false columns: false :domain_element: customer_city_1 :domain_value: false _comma: "," }}{{! Start iterating columns (expect '[' ']' outputted in calling context }}{{#columns}} {{! - output Name of column - output |-> }}{{parameter_name}} |-> {{! Case 1: column value is a domain_element - output "domain_element" Notice: if domain_element is false --> use domain_value, and vice versa. Domain value should be used litreralle, and domain element is should be prefixed }}{{#domain_element}}"{{domain_element}}"{{/domain_element}}{{! Case 2: domain_value - output: domain_value }}{{#domain_value}}{{{domain_value}}}{{/domain_value}}{{! Case 3: no domain_value, no domain_elment, no rows, no columns }}{{^domain_value}}{{^domain_element}}{{^columns.length}}{{^rows.length}}Nil{{/rows.length}}{{/columns.length}}{{/domain_element}}{{/domain_value}}{{! Case 4: rows - output { - iterate rows [ ] - output } }}{{#rows.length}} { {{/rows.length}}{{#rows}}{{! when iterating rows check if row defines columns (i.e. columns.length given ) --> surround with [ ... ] }}{{#columns.length}}[ {{/columns.length}} {{>setup/steps_run_parameterExact.mustache}} {{#columns.length}} ]{{/columns.length}}{{_comma}}{{/rows}}{{#rows.length}} }{{/rows.length}}{{! Case 5: columns - output [ - output ] }}{{#columns.length}}[ {{>setup/steps_run_parameterExact.mustache}} ] {{/columns.length}}{{! End of columns (add comma) }}{{_comma}}{{/columns}}{{! no new line }}