Skip to content

Commit

Permalink
Merge pull request #33 from flisky/master
Browse files Browse the repository at this point in the history
fix(isEmpty): treat golang zero values as falsy
  • Loading branch information
cbroglie authored Dec 23, 2019
2 parents 73b1f39 + 6328bef commit c219793
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
8 changes: 3 additions & 5 deletions mustache.go
Original file line number Diff line number Diff line change
Expand Up @@ -541,15 +541,13 @@ func isEmpty(v reflect.Value) bool {
return true
}
switch val := valueInd; val.Kind() {
case reflect.Bool:
return !val.Bool()
case reflect.Slice:
case reflect.Array, reflect.Slice:
return val.Len() == 0
case reflect.String:
return len(strings.TrimSpace(val.String())) == 0
default:
return valueInd.IsZero()
}

return false
}

func indirect(v reflect.Value) reflect.Value {
Expand Down
17 changes: 14 additions & 3 deletions mustache_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,20 @@ var tests = []Test{
{`{{Name}}`, &User{"Mike", 1}, "Mike", nil},
{"{{#users}}\n{{Name}}\n{{/users}}", map[string]interface{}{"users": makeVector(2)}, "Mike\nMike\n", nil},
{"{{#users}}\r\n{{Name}}\r\n{{/users}}", map[string]interface{}{"users": makeVector(2)}, "Mike\r\nMike\r\n", nil},
{"{{#users}}Hi {{Name}}{{/users}}", map[string]interface{}{"users": ""}, "", nil},
{"{{#users}}Hi {{Name}}{{/users}}", map[string]interface{}{"users": []interface{}{}}, "", nil},
{"{{#users}}Hi {{Name}}{{/users}}", map[string]interface{}{"users": false}, "", nil},

//falsy: golang zero values
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": nil}, "", nil},
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": false}, "", nil},
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": 0}, "", nil},
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": 0.0}, "", nil},
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": ""}, "", nil},
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": Data{}}, "", nil},
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": []interface{}{}}, "", nil},
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": [0]interface{}{}}, "", nil},
//falsy: special cases we disagree with golang
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": "\t"}, "", nil},
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": []interface{}{0}}, "Hi 0", nil},
{"{{#a}}Hi {{.}}{{/a}}", map[string]interface{}{"a": [1]interface{}{0}}, "Hi 0", nil},

//section does not exist
{`{{#has}}{{/has}}`, &User{"Mike", 1}, "", nil},
Expand Down

0 comments on commit c219793

Please sign in to comment.