]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
markup/goldmark: Add warning (using Warnidf) on Goldmark <!-- raw HTML omitted -->
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 3 Nov 2024 12:37:11 +0000 (13:37 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 3 Nov 2024 13:17:10 +0000 (14:17 +0100)
Fixes #12997

common/constants/constants.go
markup/goldmark/goldmark_integration_test.go
markup/goldmark/hugocontext/hugocontext.go

index 752aef72c3cd18a46dd587dc4f8e05abaf42bdeb..48813e79b993ec028403471ccc7106f66a6ca8ff 100644 (file)
@@ -22,6 +22,7 @@ const (
 
        WarnFrontMatterParamsOverrides = "warning-frontmatter-params-overrides"
        WarnRenderShortcodesInHTML     = "warning-rendershortcodes-in-html"
+       WarnGoldmarkRawHTML            = "warning-goldmark-raw-html"
 )
 
 // Field/method names with special meaning.
index 19b18692e28ea2cf228068e79918ef61ce36f2f0..8b7cc5a543253938d53930f29b98ae5cdb0b0ad3 100644 (file)
@@ -802,3 +802,28 @@ H~2~0
                "<p>1<sup>st</sup></p>",
        )
 }
+
+// Issue 12997.
+func TestGoldmarkRawHTMLWarning(t *testing.T) {
+       files := `
+-- hugo.toml --
+disableKinds = ['home','rss','section','sitemap','taxonomy','term']
+markup.goldmark.renderer.unsafe = false
+-- content/p1.md --
+---
+title: "p1"
+---
+<div>Some raw HTML</div>
+-- layouts/_default/single.html --
+{{ .Content }}
+`
+
+       b := hugolib.Test(t, files, hugolib.TestOptWarn())
+
+       b.AssertFileContent("public/p1/index.html", "<!-- raw HTML omitted -->")
+       b.AssertLogContains("WARN  Raw HTML omitted from \"/content/p1.md\"; see https://gohugo.io/getting-started/configuration-markup/#rendererunsafe\nYou can suppress this warning by adding the following to your site configuration:\nignoreLogs = ['warning-goldmark-raw-html']")
+
+       b = hugolib.Test(t, strings.ReplaceAll(files, "markup.goldmark.renderer.unsafe = false", "markup.goldmark.renderer.unsafe = true"), hugolib.TestOptWarn())
+       b.AssertFileContent("public/p1/index.html", "! <!-- raw HTML omitted -->")
+       b.AssertLogContains("! WARN")
+}
index 223c30c912e6ef010e69af159b22ba643a7364f6..912e9eb3c8bfed4ccd7c5435724f0672f333fa40 100644 (file)
@@ -159,6 +159,14 @@ func (r *hugoContextRenderer) renderHTMLBlock(
        w util.BufWriter, source []byte, node ast.Node, entering bool,
 ) (ast.WalkStatus, error) {
        n := node.(*ast.HTMLBlock)
+       var p any
+       ctx, ok := w.(*render.Context)
+       if ok {
+               p, _ = render.GetPageAndPageInner(ctx)
+       }
+       if !r.Unsafe {
+               r.logger.Warnidf(constants.WarnGoldmarkRawHTML, "Raw HTML omitted from %q; see https://gohugo.io/getting-started/configuration-markup/#rendererunsafe", p)
+       }
        if entering {
                if r.Unsafe {
                        l := n.Lines().Len()
@@ -168,11 +176,6 @@ func (r *hugoContextRenderer) renderHTMLBlock(
                                var stripped bool
                                linev, stripped = r.stripHugoCtx(linev)
                                if stripped {
-                                       var p any
-                                       ctx, ok := w.(*render.Context)
-                                       if ok {
-                                               p, _ = render.GetPageAndPageInner(ctx)
-                                       }
                                        r.logger.Warnidf(constants.WarnRenderShortcodesInHTML, ".RenderShortcodes detected inside HTML block in %q; this may not be what you intended, see https://gohugo.io/methods/page/rendershortcodes/#limitations", p)
                                }