diff --git a/common/jinja/value.cpp b/common/jinja/value.cpp index fc1023ff2f..acf24257fb 100644 --- a/common/jinja/value.cpp +++ b/common/jinja/value.cpp @@ -698,6 +698,7 @@ const func_builtins & value_bool_t::get_builtins() const { bool val = args.get_pos(0)->as_bool(); return mk_val(val ? "True" : "False"); }}, + {"tojson", tojson}, }; return builtins; } diff --git a/tests/test-jinja.cpp b/tests/test-jinja.cpp index ed75f70897..6ed0487685 100644 --- a/tests/test-jinja.cpp +++ b/tests/test-jinja.cpp @@ -540,6 +540,66 @@ static void test_literals(testing & t) { json::object(), "1" ); + + test_template(t, "integer|abs", + "{{ -42 | abs }}", + json::object(), + "42" + ); + + test_template(t, "integer|float", + "{{ 42 | float }}", + json::object(), + "42.0" + ); + + test_template(t, "integer|tojson", + "{{ 42 | tojson }}", + json::object(), + "42" + ); + + test_template(t, "float|abs", + "{{ -3.14 | abs }}", + json::object(), + "3.14" + ); + + test_template(t, "float|int", + "{{ 3.14 | int }}", + json::object(), + "3" + ); + + test_template(t, "float|tojson", + "{{ 3.14 | tojson }}", + json::object(), + "3.14" + ); + + test_template(t, "string|tojson", + "{{ 'hello' | tojson }}", + json::object(), + "\"hello\"" + ); + + test_template(t, "boolean|int", + "{{ true | int }}", + json::object(), + "1" + ); + + test_template(t, "boolean|float", + "{{ true | float }}", + json::object(), + "1.0" + ); + + test_template(t, "boolean|tojson", + "{{ true | tojson }}", + json::object(), + "true" + ); } static void test_comments(testing & t) {