mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
markup/goldmark: TOC: render strikethrough, emojis
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
This commit is contained in:
parent
1f48b717c7
commit
134e7d1d3d
3 changed files with 26 additions and 12 deletions
|
@ -18,14 +18,14 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo-goldmark-extensions/passthrough"
|
"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/codeblocks"
|
||||||
"github.com/gohugoio/hugo/markup/goldmark/goldmark_config"
|
"github.com/gohugoio/hugo/markup/goldmark/goldmark_config"
|
||||||
"github.com/gohugoio/hugo/markup/goldmark/images"
|
"github.com/gohugoio/hugo/markup/goldmark/images"
|
||||||
"github.com/gohugoio/hugo/markup/goldmark/internal/extensions/attributes"
|
"github.com/gohugoio/hugo/markup/goldmark/internal/extensions/attributes"
|
||||||
"github.com/gohugoio/hugo/markup/goldmark/internal/render"
|
"github.com/gohugoio/hugo/markup/goldmark/internal/render"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/markup/converter"
|
|
||||||
"github.com/gohugoio/hugo/markup/tableofcontents"
|
|
||||||
"github.com/yuin/goldmark"
|
"github.com/yuin/goldmark"
|
||||||
emoji "github.com/yuin/goldmark-emoji"
|
emoji "github.com/yuin/goldmark-emoji"
|
||||||
"github.com/yuin/goldmark/ast"
|
"github.com/yuin/goldmark/ast"
|
||||||
|
@ -34,6 +34,9 @@ import (
|
||||||
"github.com/yuin/goldmark/renderer"
|
"github.com/yuin/goldmark/renderer"
|
||||||
"github.com/yuin/goldmark/renderer/html"
|
"github.com/yuin/goldmark/renderer/html"
|
||||||
"github.com/yuin/goldmark/text"
|
"github.com/yuin/goldmark/text"
|
||||||
|
|
||||||
|
"github.com/gohugoio/hugo/markup/converter"
|
||||||
|
"github.com/gohugoio/hugo/markup/tableofcontents"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -91,10 +94,17 @@ func newMarkdown(pcfg converter.ProviderConfig) goldmark.Markdown {
|
||||||
rendererOptions = append(rendererOptions, html.WithUnsafe())
|
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 (
|
var (
|
||||||
extensions = []goldmark.Extender{
|
extensions = []goldmark.Extender{
|
||||||
newLinks(cfg),
|
newLinks(cfg),
|
||||||
newTocExtension(rendererOptions),
|
newTocExtension(tocRendererOptions),
|
||||||
}
|
}
|
||||||
parserOptions []parser.Option
|
parserOptions []parser.Option
|
||||||
)
|
)
|
||||||
|
|
|
@ -16,6 +16,10 @@ package goldmark
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
|
||||||
|
strikethroughAst "github.com/yuin/goldmark/extension/ast"
|
||||||
|
|
||||||
|
emojiAst "github.com/yuin/goldmark-emoji/ast"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/markup/tableofcontents"
|
"github.com/gohugoio/hugo/markup/tableofcontents"
|
||||||
|
|
||||||
"github.com/yuin/goldmark"
|
"github.com/yuin/goldmark"
|
||||||
|
@ -86,7 +90,9 @@ func (t *tocTransformer) Transform(n *ast.Document, reader text.Reader, pc parse
|
||||||
ast.KindCodeSpan,
|
ast.KindCodeSpan,
|
||||||
ast.KindLink,
|
ast.KindLink,
|
||||||
ast.KindImage,
|
ast.KindImage,
|
||||||
ast.KindEmphasis:
|
ast.KindEmphasis,
|
||||||
|
strikethroughAst.KindStrikethrough,
|
||||||
|
emojiAst.KindEmoji:
|
||||||
err := t.r.Render(&headingText, reader.Source(), n)
|
err := t.r.Render(&headingText, reader.Source(), n)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return s, err
|
return s, err
|
||||||
|
|
|
@ -253,14 +253,12 @@ title: p7 (emoji)
|
||||||
`)
|
`)
|
||||||
|
|
||||||
// strikethrough
|
// strikethrough
|
||||||
// TODO failing test: Issue #8087
|
b.AssertFileContent("public/p6/index.html", `
|
||||||
// b.AssertFileContent("public/p6/index.html", `
|
<li><a href="#some-deleted-text">Some <del>deleted</del> text</a></li>
|
||||||
// <li><a href="#ome-deleted-text">Some <del>deleted</del> text</a></li>
|
`)
|
||||||
// `)
|
|
||||||
|
|
||||||
// emoji
|
// emoji
|
||||||
// TODO failing test: Issue #12022
|
b.AssertFileContent("public/p7/index.html", `
|
||||||
// b.AssertFileContent("public/p7/index.html", `
|
<li><a href="#a-snake-emoji">A 🐍 emoji</a></li>
|
||||||
// <li><a href="#a-snake-emoji">A 🐍 emoji</a></li>
|
`)
|
||||||
// `)
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue