mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-21 21:35:28 +02:00
Add Markdown diagrams and render hooks for code blocks
You can now create custom hook templates for code blocks, either one for all (`render-codeblock.html`) or for a given code language (e.g. `render-codeblock-go.html`). We also used this new hook to add support for diagrams in Hugo: * Goat (Go ASCII Tool) is built-in and enabled by default; just create a fenced code block with the language `goat` and start draw your Ascii diagrams. * Another popular alternative for diagrams in Markdown, Mermaid (supported by GitHub), can also be implemented with a simple template. See the Hugo documentation for more information. Updates #7765 Closes #9538 Fixes #9553 Fixes #8520 Fixes #6702 Fixes #9558
This commit is contained in:
@@ -18,6 +18,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/gohugoio/hugo/markup/converter/hooks"
|
||||
"github.com/gohugoio/hugo/markup/markup_config"
|
||||
|
||||
"github.com/gohugoio/hugo/common/loggers"
|
||||
@@ -27,6 +28,8 @@ import (
|
||||
qt "github.com/frankban/quicktest"
|
||||
)
|
||||
|
||||
var nopGetRenderer = func(t hooks.RendererType, id interface{}) interface{} { return nil }
|
||||
|
||||
func TestToc(t *testing.T) {
|
||||
c := qt.New(t)
|
||||
|
||||
@@ -58,7 +61,7 @@ And then some.
|
||||
c.Assert(err, qt.IsNil)
|
||||
conv, err := p.New(converter.DocumentContext{})
|
||||
c.Assert(err, qt.IsNil)
|
||||
b, err := conv.Convert(converter.RenderContext{Src: []byte(content), RenderTOC: true})
|
||||
b, err := conv.Convert(converter.RenderContext{Src: []byte(content), RenderTOC: true, GetRenderer: nopGetRenderer})
|
||||
c.Assert(err, qt.IsNil)
|
||||
got := b.(converter.TableOfContentsProvider).TableOfContents().ToHTML(2, 3, false)
|
||||
c.Assert(got, qt.Equals, `<nav id="TableOfContents">
|
||||
@@ -108,7 +111,7 @@ func TestEscapeToc(t *testing.T) {
|
||||
"# `echo codeblock`",
|
||||
}, "\n")
|
||||
// content := ""
|
||||
b, err := safeConv.Convert(converter.RenderContext{Src: []byte(content), RenderTOC: true})
|
||||
b, err := safeConv.Convert(converter.RenderContext{Src: []byte(content), RenderTOC: true, GetRenderer: nopGetRenderer})
|
||||
c.Assert(err, qt.IsNil)
|
||||
got := b.(converter.TableOfContentsProvider).TableOfContents().ToHTML(1, 2, false)
|
||||
c.Assert(got, qt.Equals, `<nav id="TableOfContents">
|
||||
@@ -120,7 +123,7 @@ func TestEscapeToc(t *testing.T) {
|
||||
</ul>
|
||||
</nav>`, qt.Commentf(got))
|
||||
|
||||
b, err = unsafeConv.Convert(converter.RenderContext{Src: []byte(content), RenderTOC: true})
|
||||
b, err = unsafeConv.Convert(converter.RenderContext{Src: []byte(content), RenderTOC: true, GetRenderer: nopGetRenderer})
|
||||
c.Assert(err, qt.IsNil)
|
||||
got = b.(converter.TableOfContentsProvider).TableOfContents().ToHTML(1, 2, false)
|
||||
c.Assert(got, qt.Equals, `<nav id="TableOfContents">
|
||||
|
Reference in New Issue
Block a user