mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
markup/goldmark: Exclude event attributes from markdown render hook
Fixes #9511
This commit is contained in:
parent
b2a827c52c
commit
ff545f4276
2 changed files with 40 additions and 3 deletions
|
@ -20,6 +20,7 @@ import (
|
||||||
"github.com/gohugoio/hugo/hugolib"
|
"github.com/gohugoio/hugo/hugolib"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Issue 9463
|
||||||
func TestAttributeExclusion(t *testing.T) {
|
func TestAttributeExclusion(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
@ -61,6 +62,39 @@ foo
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Issue 9511
|
||||||
|
func TestAttributeExclusionWithRenderHook(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
files := `
|
||||||
|
-- content/p1.md --
|
||||||
|
---
|
||||||
|
title: "p1"
|
||||||
|
---
|
||||||
|
## Heading {onclick="alert('renderhook')" data-foo="bar"}
|
||||||
|
-- layouts/_default/single.html --
|
||||||
|
{{ .Content }}
|
||||||
|
-- layouts/_default/_markup/render-heading.html --
|
||||||
|
<h{{ .Level }}
|
||||||
|
{{- range $k, $v := .Attributes -}}
|
||||||
|
{{- printf " %s=%q" $k $v | safeHTMLAttr -}}
|
||||||
|
{{- end -}}
|
||||||
|
>{{ .Text | safeHTML }}</h{{ .Level }}>
|
||||||
|
`
|
||||||
|
|
||||||
|
b := hugolib.NewIntegrationTestBuilder(
|
||||||
|
hugolib.IntegrationTestConfig{
|
||||||
|
T: t,
|
||||||
|
TxtarString: files,
|
||||||
|
NeedsOsFS: false,
|
||||||
|
},
|
||||||
|
).Build()
|
||||||
|
|
||||||
|
b.AssertFileContent("public/p1/index.html", `
|
||||||
|
<h2 data-foo="bar" id="heading">Heading</h2>
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
// Issue 9504
|
// Issue 9504
|
||||||
func TestLinkInTitle(t *testing.T) {
|
func TestLinkInTitle(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
|
@ -57,6 +57,9 @@ func (a *attributesHolder) Attributes() map[string]string {
|
||||||
a.attributesInit.Do(func() {
|
a.attributesInit.Do(func() {
|
||||||
a.attributes = make(map[string]string)
|
a.attributes = make(map[string]string)
|
||||||
for _, attr := range a.astAttributes {
|
for _, attr := range a.astAttributes {
|
||||||
|
if strings.HasPrefix(string(attr.Name), "on") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
a.attributes[string(attr.Name)] = string(util.EscapeHTML(attr.Value.([]byte)))
|
a.attributes[string(attr.Name)] = string(util.EscapeHTML(attr.Value.([]byte)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue