markup/goldmark: Add warning (using Warnidf) on Goldmark <!-- raw HTML omitted --> - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 62a96cef7fbe496271e8cca0f234193f6106a771
 (DIR) parent 30d9aea8607e8143968d73d11a8c1c0e51d34343
 (HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Sun,  3 Nov 2024 13:37:11 +0100
       
       markup/goldmark: Add warning (using Warnidf) on Goldmark <!-- raw HTML omitted -->
       
       Fixes #12997
       
       Diffstat:
         M common/constants/constants.go       |       1 +
         M markup/goldmark/goldmark_integrati… |      25 +++++++++++++++++++++++++
         M markup/goldmark/hugocontext/hugoco… |      13 ++++++++-----
       
       3 files changed, 34 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/common/constants/constants.go b/common/constants/constants.go
       @@ -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.
 (DIR) diff --git a/markup/goldmark/goldmark_integration_test.go b/markup/goldmark/goldmark_integration_test.go
       @@ -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")
       +}
 (DIR) diff --git a/markup/goldmark/hugocontext/hugocontext.go b/markup/goldmark/hugocontext/hugocontext.go
       @@ -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)
                                        }