Skip to content

Commit

Permalink
markup/goldmark: TOC: render strikethrough, emojis
Browse files Browse the repository at this point in the history
Configure the TOC (TableOfContents, toc.go) goldmark renderer to always
enable the Strikethrough and Emoji extensions. This allows handling
ast.KindStrikethrough and ast.KindEmoji AST nodes when rendering the TOC.

Fixes #7169
Fixes #11783
Fixes #12022
  • Loading branch information
lyind committed Feb 20, 2024
1 parent a118cb4 commit bf22c3e
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 12 deletions.
16 changes: 13 additions & 3 deletions markup/goldmark/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ import (
"bytes"

"github.com/gohugoio/hugo-goldmark-extensions/passthrough"
"github.com/yuin/goldmark/util"

"github.com/gohugoio/hugo/markup/goldmark/codeblocks"
"github.com/gohugoio/hugo/markup/goldmark/goldmark_config"
"github.com/gohugoio/hugo/markup/goldmark/images"
"github.com/gohugoio/hugo/markup/goldmark/internal/extensions/attributes"
"github.com/gohugoio/hugo/markup/goldmark/internal/render"

"github.com/gohugoio/hugo/markup/converter"
"github.com/gohugoio/hugo/markup/tableofcontents"
"github.com/yuin/goldmark"
emoji "github.com/yuin/goldmark-emoji"
"github.com/yuin/goldmark/ast"
Expand All @@ -34,6 +34,9 @@ import (
"github.com/yuin/goldmark/renderer"
"github.com/yuin/goldmark/renderer/html"
"github.com/yuin/goldmark/text"

"github.com/gohugoio/hugo/markup/converter"
"github.com/gohugoio/hugo/markup/tableofcontents"
)

const (
Expand Down Expand Up @@ -91,10 +94,17 @@ func newMarkdown(pcfg converter.ProviderConfig) goldmark.Markdown {
rendererOptions = append(rendererOptions, html.WithUnsafe())
}

tocRendererOptions := make([]renderer.Option, len(rendererOptions))
if rendererOptions != nil {
copy(tocRendererOptions, rendererOptions)
}
tocRendererOptions = append(tocRendererOptions,
renderer.WithNodeRenderers(util.Prioritized(extension.NewStrikethroughHTMLRenderer(), 500)),
renderer.WithNodeRenderers(util.Prioritized(emoji.NewHTMLRenderer(), 200)))
var (
extensions = []goldmark.Extender{
newLinks(cfg),
newTocExtension(rendererOptions),
newTocExtension(tocRendererOptions),
}
parserOptions []parser.Option
)
Expand Down
8 changes: 7 additions & 1 deletion markup/goldmark/toc.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ package goldmark
import (
"bytes"

strikethroughAst "github.com/yuin/goldmark/extension/ast"

emojiAst "github.com/yuin/goldmark-emoji/ast"

"github.com/gohugoio/hugo/markup/tableofcontents"

"github.com/yuin/goldmark"
Expand Down Expand Up @@ -86,7 +90,9 @@ func (t *tocTransformer) Transform(n *ast.Document, reader text.Reader, pc parse
ast.KindCodeSpan,
ast.KindLink,
ast.KindImage,
ast.KindEmphasis:
ast.KindEmphasis,
strikethroughAst.KindStrikethrough,
emojiAst.KindEmoji:
err := t.r.Render(&headingText, reader.Source(), n)
if err != nil {
return s, err
Expand Down
14 changes: 6 additions & 8 deletions markup/goldmark/toc_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -253,14 +253,12 @@ title: p7 (emoji)
`)

// strikethrough
// TODO failing test: Issue #8087
// b.AssertFileContent("public/p6/index.html", `
// <li><a href="#ome-deleted-text">Some <del>deleted</del> text</a></li>
// `)
b.AssertFileContent("public/p6/index.html", `
<li><a href="#some-deleted-text">Some <del>deleted</del> text</a></li>
`)

// emoji
// TODO failing test: Issue #12022
// b.AssertFileContent("public/p7/index.html", `
// <li><a href="#a-snake-emoji">A &#x1f40d; emoji</a></li>
// `)
b.AssertFileContent("public/p7/index.html", `
<li><a href="#a-snake-emoji">A &#x1f40d; emoji</a></li>
`)
}

0 comments on commit bf22c3e

Please sign in to comment.