Skip to content

Commit af947eb

Browse files
tojson fixes
1 parent 8630878 commit af947eb

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

builtins.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ func builtinCycler(args []Value, kwargs map[string]Value) (Value, error) {
183183
func registerFilters(s *scope) {
184184
filters := map[string]func([]Value, map[string]Value) (Value, error){
185185
"tojson": filterTojson,
186+
"from_json": filterFromjson,
186187
"fromjson": filterFromjson,
187188
"items": filterItems,
188189
"join": filterJoin,

jinja_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,25 @@ func TestTojsonFilter(t *testing.T) {
9494
}
9595
}
9696

97+
func TestFromJSONFilter(t *testing.T) {
98+
source := `{%- set data = data | from_json -%}{{ data.name }}:{{ data.value }}`
99+
tmpl, err := jinja.Compile(source)
100+
if err != nil {
101+
t.Fatalf("compile: %v", err)
102+
}
103+
104+
result, err := tmpl.Render(map[string]any{
105+
"data": `{"name":"test","value":42}`,
106+
})
107+
if err != nil {
108+
t.Fatalf("render: %v", err)
109+
}
110+
111+
if result != "test:42" {
112+
t.Errorf("got %q, want %q", result, "test:42")
113+
}
114+
}
115+
97116
func TestNamespace(t *testing.T) {
98117
source := `{%- set ns = namespace(found=false) -%}
99118
{%- for item in items -%}

0 commit comments

Comments
 (0)