mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-25 22:00:58 +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:
@@ -31,9 +31,15 @@ var reservedSections = map[string]bool{
|
||||
type LayoutDescriptor struct {
|
||||
Type string
|
||||
Section string
|
||||
Kind string
|
||||
Lang string
|
||||
Layout string
|
||||
|
||||
// E.g. "page", but also used for the _markup render kinds, e.g. "render-image".
|
||||
Kind string
|
||||
|
||||
// Comma-separated list of kind variants, e.g. "go,json" as variants which would find "render-codeblock-go.html"
|
||||
KindVariants string
|
||||
|
||||
Lang string
|
||||
Layout string
|
||||
// LayoutOverride indicates what we should only look for the above layout.
|
||||
LayoutOverride bool
|
||||
|
||||
@@ -139,6 +145,12 @@ func resolvePageTemplate(d LayoutDescriptor, f Format) []string {
|
||||
}
|
||||
|
||||
if d.RenderingHook {
|
||||
if d.KindVariants != "" {
|
||||
// Add the more specific variants first.
|
||||
for _, variant := range strings.Split(d.KindVariants, ",") {
|
||||
b.addLayoutVariations(d.Kind + "-" + variant)
|
||||
}
|
||||
}
|
||||
b.addLayoutVariations(d.Kind)
|
||||
b.addSectionType()
|
||||
}
|
||||
|
Reference in New Issue
Block a user