mirror of
https://github.com/pantor/inja.git
synced 2026-05-18 10:15:26 +00:00
Allow index in nested loops
This commit is contained in:
@@ -544,6 +544,13 @@ public:
|
||||
const std::vector<json> list = eval_expression<std::vector<json>>(element_loop->list, data);
|
||||
for (unsigned int i = 0; i < list.size(); i++) {
|
||||
json data_loop = data;
|
||||
/* For nested loops, use parent/index */
|
||||
if (data_loop.count ("index") == 1 && data_loop.count ("index") == 1) {
|
||||
data_loop["parent"]["index"] = data_loop["index"];
|
||||
data_loop["parent"]["index1"] = data_loop["index1"];
|
||||
data_loop["parent"]["is_first"] = data_loop["is_first"];
|
||||
data_loop["parent"]["is_last"] = data_loop["is_last"];
|
||||
}
|
||||
data_loop[element_loop->value] = list[i];
|
||||
data_loop["index"] = i;
|
||||
data_loop["index1"] = i + 1;
|
||||
|
||||
@@ -59,6 +59,7 @@ TEST_CASE("types") {
|
||||
|
||||
data["empty_loop"] = {};
|
||||
CHECK( env.render("{% for name in empty_loop %}a{% endfor %}", data) == "" );
|
||||
CHECK( env.render("{% for name in {} %}a{% endfor %}", data) == "" );
|
||||
|
||||
CHECK_THROWS_WITH( env.render("{% for name ins names %}a{% endfor %}", data), "[inja.exception.parser_error] unknown loop statement: for name ins names" );
|
||||
// CHECK_THROWS_WITH( env.render("{% for name in relatives %}{{ name }}{% endfor %}", data), "[inja.exception.json_error] [json.exception.type_error.302] type must be array, but is object" );
|
||||
|
||||
Reference in New Issue
Block a user