Add non-string support in markdownify
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 6 May 2016 08:11:17 +0000 (10:11 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 6 May 2016 08:11:17 +0000 (10:11 +0200)
tpl/template_funcs.go
tpl/template_funcs_test.go

index 8b99cc09d08274a15941752cae51de646cc74db7..80ecdfe0c171f45f3cee1938aa30751335194751 100644 (file)
@@ -1203,7 +1203,8 @@ var markdownTrimPrefix = []byte("<p>")
 var markdownTrimSuffix = []byte("</p>\n")
 
 // markdownify renders a given string from Markdown to HTML.
-func markdownify(text string) template.HTML {
+func markdownify(in interface{}) template.HTML {
+       text := cast.ToString(in)
        m := helpers.RenderBytes(&helpers.RenderingContext{Content: []byte(text), PageFmt: "markdown"})
        m = bytes.TrimPrefix(m, markdownTrimPrefix)
        m = bytes.TrimSuffix(m, markdownTrimSuffix)
index 3152b13a10914ee2e628d91a003a5e713f4d8b88..32871f6f054a5d1a4032d8a05f3f73512033b2e3 100644 (file)
@@ -1699,13 +1699,19 @@ func TestReturnWhenSet(t *testing.T) {
 }
 
 func TestMarkdownify(t *testing.T) {
-       result := markdownify("Hello **World!**")
-
-       expect := template.HTML("Hello <strong>World!</strong>")
-
-       if result != expect {
-               t.Errorf("Markdownify: got '%s', expected '%s'", result, expect)
+       for i, this := range []struct {
+               in     interface{}
+               expect interface{}
+       }{
+               {"Hello **World!**", template.HTML("Hello <strong>World!</strong>")},
+               {[]byte("Hello Bytes **World!**"), template.HTML("Hello Bytes <strong>World!</strong>")},
+       } {
+               result := markdownify(this.in)
+               if !reflect.DeepEqual(result, this.expect) {
+                       t.Errorf("[%d] markdownify got %v (type %v) but expected %v (type %v)", i, result, reflect.TypeOf(result), this.expect, reflect.TypeOf(this.expect))
+               }
        }
+
 }
 
 func TestApply(t *testing.T) {