summaryrefslogtreecommitdiffstats
path: root/markup
diff options
context:
space:
mode:
Diffstat (limited to 'markup')
-rw-r--r--markup/goldmark/convert.go10
-rw-r--r--markup/goldmark/goldmark_config/config.go42
-rw-r--r--markup/goldmark/goldmark_integration_test.go50
-rw-r--r--markup/goldmark/hugocontext/hugocontext.go4
-rw-r--r--markup/goldmark/hugocontext/hugocontext_test.go2
-rw-r--r--markup/markup.go29
6 files changed, 127 insertions, 10 deletions
diff --git a/markup/goldmark/convert.go b/markup/goldmark/convert.go
index d7180140d..7c00433d5 100644
--- a/markup/goldmark/convert.go
+++ b/markup/goldmark/convert.go
@@ -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())
}
diff --git a/markup/goldmark/goldmark_config/config.go b/markup/goldmark/goldmark_config/config.go
index c22852b29..620475c48 100644
--- a/markup/goldmark/goldmark_config/config.go
+++ b/markup/goldmark/goldmark_config/config.go
@@ -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
diff --git a/markup/goldmark/goldmark_integration_test.go b/markup/goldmark/goldmark_integration_test.go
index ffeb763a7..82b41cc67 100644
--- a/markup/goldmark/goldmark_integration_test.go
+++ b/markup/goldmark/goldmark_integration_test.go
@@ -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>",
+ )
+}
diff --git a/markup/goldmark/hugocontext/hugocontext.go b/markup/goldmark/hugocontext/hugocontext.go
index ed62bb8c6..b9c548dac 100644
--- a/markup/goldmark/hugocontext/hugocontext.go
+++ b/markup/goldmark/hugocontext/hugocontext.go
@@ -34,7 +34,7 @@ func New() goldmark.Extender {
// Wrap wraps the given byte slice in a Hugo context that used to determine the correct Page
// in .RenderShortcodes.
-func Wrap(b []byte, pid uint64) []byte {
+func Wrap(b []byte, pid uint64) string {
buf := bufferpool.GetBuffer()
defer bufferpool.PutBuffer(buf)
buf.Write(prefix)
@@ -45,7 +45,7 @@ func Wrap(b []byte, pid uint64) []byte {
buf.Write(b)
buf.Write(prefix)
buf.Write(closingDelimAndNewline)
- return buf.Bytes()
+ return buf.String()
}
var kindHugoContext = ast.NewNodeKind("HugoContext")
diff --git a/markup/goldmark/hugocontext/hugocontext_test.go b/markup/goldmark/hugocontext/hugocontext_test.go
index da96cc339..4a6eb80f5 100644
--- a/markup/goldmark/hugocontext/hugocontext_test.go
+++ b/markup/goldmark/hugocontext/hugocontext_test.go
@@ -24,7 +24,7 @@ func TestWrap(t *testing.T) {
b := []byte("test")
- c.Assert(string(Wrap(b, 42)), qt.Equals, "{{__hugo_ctx pid=42}}\ntest{{__hugo_ctx/}}\n")
+ c.Assert(Wrap(b, 42), qt.Equals, "{{__hugo_ctx pid=42}}\ntest{{__hugo_ctx/}}\n")
}
func BenchmarkWrap(b *testing.B) {
diff --git a/markup/markup.go b/markup/markup.go
index 835c7bbec..cd1c1f823 100644
--- a/markup/markup.go
+++ b/markup/markup.go
@@ -19,6 +19,7 @@ import (
"strings"
"github.com/gohugoio/hugo/markup/highlight"
+ "github.com/gohugoio/hugo/media"
"github.com/gohugoio/hugo/markup/markup_config"
@@ -44,7 +45,7 @@ func NewConverterProvider(cfg converter.ProviderConfig) (ConverterProvider, erro
defaultHandler := mcfg.DefaultMarkdownHandler
var defaultFound bool
- add := func(p converter.ProviderProvider, aliases ...string) error {
+ add := func(p converter.ProviderProvider, subType string, aliases ...string) error {
c, err := p.New(cfg)
if err != nil {
return err
@@ -53,6 +54,7 @@ func NewConverterProvider(cfg converter.ProviderConfig) (ConverterProvider, erro
name := c.Name()
aliases = append(aliases, name)
+ aliases = append(aliases, subType)
if strings.EqualFold(name, defaultHandler) {
aliases = append(aliases, "markdown")
@@ -63,19 +65,21 @@ func NewConverterProvider(cfg converter.ProviderConfig) (ConverterProvider, erro
return nil
}
- if err := add(goldmark.Provider); err != nil {
+ contentTypes := cfg.Conf.ContentTypes().(media.ContentTypes)
+
+ if err := add(goldmark.Provider, contentTypes.Markdown.SubType, contentTypes.Markdown.Suffixes()...); err != nil {
return nil, err
}
- if err := add(asciidocext.Provider, "ad", "adoc"); err != nil {
+ if err := add(asciidocext.Provider, contentTypes.AsciiDoc.SubType, contentTypes.AsciiDoc.Suffixes()...); err != nil {
return nil, err
}
- if err := add(rst.Provider); err != nil {
+ if err := add(rst.Provider, contentTypes.ReStructuredText.SubType, contentTypes.ReStructuredText.Suffixes()...); err != nil {
return nil, err
}
- if err := add(pandoc.Provider, "pdc"); err != nil {
+ if err := add(pandoc.Provider, contentTypes.Pandoc.SubType, contentTypes.Pandoc.Suffixes()...); err != nil {
return nil, err
}
- if err := add(org.Provider); err != nil {
+ if err := add(org.Provider, contentTypes.EmacsOrgMode.SubType, contentTypes.EmacsOrgMode.Suffixes()...); err != nil {
return nil, err
}
@@ -133,3 +137,16 @@ func addConverter(m map[string]converter.Provider, c converter.Provider, aliases
m[alias] = c
}
}
+
+// ResolveMarkup returns the markup type.
+func ResolveMarkup(s string) string {
+ s = strings.ToLower(s)
+ switch s {
+ case "goldmark":
+ return media.DefaultContentTypes.Markdown.SubType
+ case "asciidocext":
+ return media.DefaultContentTypes.AsciiDoc.SubType
+ default:
+ return s
+ }
+}