]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
markup/goldmark: Support extras extension
authorJoe Mooring <joe.mooring@veriphor.com>
Sat, 4 May 2024 01:06:10 +0000 (18:06 -0700)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 10 May 2024 20:32:02 +0000 (22:32 +0200)
Enables inclusion of these HTML elements in Markdown:

- Inserted Text (++inserted++)
- Mark Text (==marked==)
- Subscript (H~2~O)
- Superscript (1^st^)

docs/data/docs.yaml
go.mod
go.sum
markup/goldmark/convert.go
markup/goldmark/goldmark_config/config.go
markup/goldmark/goldmark_integration_test.go

index dcc96c590e96f63b437aa9f19763ef32542e7199..036c212850076f8608a8956472b5fb0b2b89607d 100644 (file)
@@ -1065,6 +1065,15 @@ config:
           enable: false
           escapedSpace: false
         definitionList: true
+        extras:
+          insert:
+            enable: false
+          mark:
+            enable: false
+          subscript:
+            enable: false
+          superscript:
+            enable: false
         footnote: true
         linkify: true
         linkifyProtocol: https
diff --git a/go.mod b/go.mod
index c441df5af120eb6a61e77136f0bb1f06a4c09832..affe8f528390681a582c139fc6781250e9cbd54e 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -35,6 +35,7 @@ require (
        github.com/gobuffalo/flect v1.0.2
        github.com/gobwas/glob v0.2.3
        github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e
+       github.com/gohugoio/hugo-goldmark-extensions/extras v0.1.0
        github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.2.0
        github.com/gohugoio/locales v0.14.0
        github.com/gohugoio/localescompressed v1.0.1
diff --git a/go.sum b/go.sum
index f9b71ddff40aec22bd7836fd996ef67b466a9177..60fe686ae87e5ce4641d9633ec6128812ae24f20 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -213,6 +213,8 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
 github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
 github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e h1:QArsSubW7eDh8APMXkByjQWvuljwPGAGQpJEFn0F0wY=
 github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e/go.mod h1:3Ltoo9Banwq0gOtcOwxuHG6omk+AwsQPADyw2vQYOJQ=
+github.com/gohugoio/hugo-goldmark-extensions/extras v0.1.0 h1:YhxZNU8y2vxV6Ibr7QJzzUlpr8oHHWX/l+Q1R/a5Zao=
+github.com/gohugoio/hugo-goldmark-extensions/extras v0.1.0/go.mod h1:0cuvOnGKW7WeXA3i7qK6IS07FH1bgJ2XzOjQ7BMJYH4=
 github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.2.0 h1:PCtO5l++psZf48yen2LxQ3JiOXxaRC6v0594NeHvGZg=
 github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.2.0/go.mod h1:g9CCh+Ci2IMbPUrVJuXbBTrA+rIIx5+hDQ4EXYaQDoM=
 github.com/gohugoio/locales v0.14.0 h1:Q0gpsZwfv7ATHMbcTNepFd59H7GoykzWJIxi113XGDc=
index d7180140d91c879da1baa97420d7b7119a00a496..7c00433d51a7236e04f1ee9be3a30b5581b0df91 100644 (file)
@@ -17,6 +17,7 @@ package goldmark
 import (
        "bytes"
 
+       "github.com/gohugoio/hugo-goldmark-extensions/extras"
        "github.com/gohugoio/hugo-goldmark-extensions/passthrough"
        "github.com/gohugoio/hugo/markup/goldmark/hugocontext"
        "github.com/yuin/goldmark/util"
@@ -113,6 +114,15 @@ func newMarkdown(pcfg converter.ProviderConfig) goldmark.Markdown {
 
        extensions = append(extensions, images.New(cfg.Parser.WrapStandAloneImageWithinParagraph))
 
+       extensions = append(extensions, extras.New(
+               extras.Config{
+                       Insert:      extras.InsertConfig{Enable: cfg.Extensions.Extras.Insert.Enable},
+                       Mark:        extras.MarkConfig{Enable: cfg.Extensions.Extras.Mark.Enable},
+                       Subscript:   extras.SubscriptConfig{Enable: cfg.Extensions.Extras.Subscript.Enable},
+                       Superscript: extras.SuperscriptConfig{Enable: cfg.Extensions.Extras.Superscript.Enable},
+               },
+       ))
+
        if mcfg.Highlight.CodeFences {
                extensions = append(extensions, codeblocks.New())
        }
index c22852b29af26b387239adda65cbb149b166d360..620475c4840d7be8ac4c7bdb904a27f9dc6168ed 100644 (file)
@@ -49,6 +49,20 @@ var Default = Config{
                        EastAsianLineBreaksStyle: "simple",
                        EscapedSpace:             false,
                },
+               Extras: Extras{
+                       Superscript: Superscript{
+                               Enable: false,
+                       },
+                       Subscript: Subscript{
+                               Enable: false,
+                       },
+                       Insert: Insert{
+                               Enable: false,
+                       },
+                       Mark: Mark{
+                               Enable: false,
+                       },
+               },
                Passthrough: Passthrough{
                        Enable: false,
                        Delimiters: DelimitersConfig{
@@ -112,6 +126,7 @@ type Extensions struct {
        Typographer    Typographer
        Footnote       bool
        DefinitionList bool
+       Extras         Extras
        Passthrough    Passthrough
 
        // GitHub flavored markdown
@@ -150,7 +165,32 @@ type Typographer struct {
        Apostrophe string
 }
 
-// Passthrough hold passthrough configuration.
+// Extras holds extras configuration.
+// github.com/hugoio/hugo-goldmark-extensions/extras
+type Extras struct {
+       Insert      Insert
+       Mark        Mark
+       Subscript   Subscript
+       Superscript Superscript
+}
+
+type Insert struct {
+       Enable bool
+}
+
+type Mark struct {
+       Enable bool
+}
+
+type Subscript struct {
+       Enable bool
+}
+
+type Superscript struct {
+       Enable bool
+}
+
+// Passthrough holds passthrough configuration.
 // github.com/hugoio/hugo-goldmark-extensions/passthrough
 type Passthrough struct {
        // Whether to enable the extension
index ffeb763a7f1eb8d8b57cb4a661c8a6932966617e..82b41cc67faab9235d659d8585c8d44f951e3d59 100644 (file)
@@ -744,3 +744,53 @@ a^*=x-b^*
 %!%
        `)
 }
+
+func TestExtrasExtension(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- hugo.toml --
+disableKinds = ['page','rss','section','sitemap','taxonomy','term']
+[markup.goldmark.extensions.extras.insert]
+enable = false
+[markup.goldmark.extensions.extras.mark]
+enable = false
+[markup.goldmark.extensions.extras.subscript]
+enable = false
+[markup.goldmark.extensions.extras.superscript]
+enable = false
+-- layouts/index.html --
+{{ .Content }}
+-- content/_index.md --
+---
+title: home
+---
+++insert++
+
+==mark==
+
+H~2~0
+
+1^st^
+`
+
+       b := hugolib.Test(t, files)
+
+       b.AssertFileContent("public/index.html",
+               "<p>++insert++</p>",
+               "<p>==mark==</p>",
+               "<p>H~2~0</p>",
+               "<p>1^st^</p>",
+       )
+
+       files = strings.ReplaceAll(files, "enable = false", "enable = true")
+
+       b = hugolib.Test(t, files)
+
+       b.AssertFileContent("public/index.html",
+               "<p><ins>insert</ins></p>",
+               "<p><mark>mark</mark></p>",
+               "<p>H<sub>2</sub>0</p>",
+               "<p>1<sup>st</sup></p>",
+       )
+}