From: Carl Johnson <me@carlmjohnson.net>
Date: Mon, 2 Mar 2020 19:04:16 +0000 (-0500)
Subject: {{ in }} should work with html.Template type
X-Git-Tag: v0.66.0~5
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=ae383f04c806687cdae184d6138bcf51edbffcb2;p=brevno-suite%2Fhugo

{{ in }} should work with html.Template type

Fixes #7002
---

diff --git a/tpl/collections/collections.go b/tpl/collections/collections.go
index 5b9d4a70..80f4ccc0 100644
--- a/tpl/collections/collections.go
+++ b/tpl/collections/collections.go
@@ -292,12 +292,17 @@ func (ns *Namespace) In(l interface{}, v interface{}) (bool, error) {
 				return true, nil
 			}
 		}
-	case reflect.String:
-		if vv.Type() == lv.Type() && strings.Contains(lv.String(), vv.String()) {
-			return true, nil
-		}
 	}
-	return false, nil
+	ss, err := cast.ToStringE(l)
+	if err != nil {
+		return false, nil
+	}
+
+	su, err := cast.ToStringE(v)
+	if err != nil {
+		return false, nil
+	}
+	return strings.Contains(ss, su), nil
 }
 
 // Intersect returns the common elements in the given sets, l1 and l2.  l1 and
diff --git a/tpl/collections/collections_test.go b/tpl/collections/collections_test.go
index c98f4a52..24d3b051 100644
--- a/tpl/collections/collections_test.go
+++ b/tpl/collections/collections_test.go
@@ -345,6 +345,9 @@ func TestIn(t *testing.T) {
 		// Structs
 		{pagesVals{p3v, p2v, p3v, p2v}, p2v, true},
 		{pagesVals{p3v, p2v, p3v, p2v}, p4v, false},
+		// template.HTML
+		{template.HTML("this substring should be found"), "substring", true},
+		{template.HTML("this substring should not be found"), "subseastring", false},
 	} {
 
 		errMsg := qt.Commentf("[%d] %v", i, test)