hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 0327da050f809ff6502ef611a0f77a962dbc8a4b
parent 9b8b6d34e2d039bfc040fd865a2e77ce2c278587
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Wed,  2 Mar 2022 10:44:29 +0100

tpl/transform: Fix it when template.HTML is passes as option to Hightlight

Fixes #9591

Diffstat:
Mmarkup/highlight/config.go | 9++++++---
Mtpl/transform/transform_test.go | 3+++
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/markup/highlight/config.go b/markup/highlight/config.go
@@ -122,10 +122,13 @@ func applyOptions(opts interface{}, cfg *Config) error {
 	switch vv := opts.(type) {
 	case map[string]interface{}:
 		return applyOptionsFromMap(vv, cfg)
-	case string:
-		return applyOptionsFromString(vv, cfg)
+	default:
+		s, err := cast.ToStringE(opts)
+		if err != nil {
+			return err
+		}
+		return applyOptionsFromString(s, cfg)
 	}
-	return nil
 }
 
 func applyOptionsFromString(opts string, cfg *Config) error {
diff --git a/tpl/transform/transform_test.go b/tpl/transform/transform_test.go
@@ -15,6 +15,7 @@ package transform_test
 
 import (
 	"html/template"
+	"strings"
 	"testing"
 
 	"github.com/gohugoio/hugo/common/loggers"
@@ -81,6 +82,8 @@ func TestHighlight(t *testing.T) {
 		// Issue #4179
 		{`<Foo attr=" &lt; "></Foo>`, "xml", "", `&amp;lt;`},
 		{tstNoStringer{}, "go", "", false},
+		// Issue #9591
+		{strings.Repeat("AAA	\n", 10), "bash", template.HTML("linenos=true,noClasses=false"), "line"},
 	} {
 
 		result, err := ns.Highlight(test.s, test.lang, test.opts)