shithub: hugo

Download patch

ref: 8f071fc159ce9a0fc0ea14a73bde8f299bedd109
parent: 469351d5b6a1521069c8d82539476714df16a094
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Sun Jan 5 06:29:22 EST 2020

markup/goldmark: Make the autoID type config a string

To potentially make room for one more.

See #6707

--- a/markup/goldmark/autoid.go
+++ b/markup/goldmark/autoid.go
@@ -19,6 +19,8 @@
 	"unicode"
 	"unicode/utf8"
 
+	"github.com/gohugoio/hugo/markup/goldmark/goldmark_config"
+
 	"github.com/gohugoio/hugo/common/text"
 
 	"github.com/yuin/goldmark/ast"
@@ -85,10 +87,10 @@
 	vals      map[string]struct{}
 }
 
-func newIDFactory(asciiOnly bool) *idFactory {
+func newIDFactory(idType string) *idFactory {
 	return &idFactory{
 		vals:      make(map[string]struct{}),
-		asciiOnly: asciiOnly,
+		asciiOnly: idType == goldmark_config.AutoHeadingIDTypeGitHubAscii,
 	}
 }
 
--- a/markup/goldmark/convert.go
+++ b/markup/goldmark/convert.go
@@ -28,8 +28,8 @@
 	"github.com/spf13/afero"
 
 	"github.com/gohugoio/hugo/hugofs"
-
 	"github.com/gohugoio/hugo/markup/converter"
+	"github.com/gohugoio/hugo/markup/goldmark/goldmark_config"
 	"github.com/gohugoio/hugo/markup/highlight"
 	"github.com/gohugoio/hugo/markup/tableofcontents"
 	"github.com/yuin/goldmark"
@@ -57,7 +57,7 @@
 			cfg: cfg,
 			md:  md,
 			sanitizeAnchorName: func(s string) string {
-				return sanitizeAnchorNameString(s, cfg.MarkupConfig.Goldmark.Parser.AutoHeadingIDAsciiOnly)
+				return sanitizeAnchorNameString(s, cfg.MarkupConfig.Goldmark.Parser.AutoHeadingIDType == goldmark_config.AutoHeadingIDTypeGitHub)
 			},
 		}, nil
 	}), nil
@@ -280,7 +280,7 @@
 }
 
 func (c *goldmarkConverter) newParserContext(rctx converter.RenderContext) *parserContext {
-	ctx := parser.NewContext(parser.WithIDs(newIDFactory(c.cfg.MarkupConfig.Goldmark.Parser.AutoHeadingIDAsciiOnly)))
+	ctx := parser.NewContext(parser.WithIDs(newIDFactory(c.cfg.MarkupConfig.Goldmark.Parser.AutoHeadingIDType)))
 	ctx.Set(tocEnableKey, rctx.RenderTOC)
 	return &parserContext{
 		Context: ctx,
--- a/markup/goldmark/convert_test.go
+++ b/markup/goldmark/convert_test.go
@@ -17,6 +17,8 @@
 	"strings"
 	"testing"
 
+	"github.com/gohugoio/hugo/markup/goldmark/goldmark_config"
+
 	"github.com/gohugoio/hugo/markup/highlight"
 
 	"github.com/gohugoio/hugo/markup/markup_config"
@@ -169,7 +171,7 @@
 ## God is Good: 神真美好
 `
 	mconf := markup_config.Default
-	mconf.Goldmark.Parser.AutoHeadingIDAsciiOnly = true
+	mconf.Goldmark.Parser.AutoHeadingIDType = goldmark_config.AutoHeadingIDTypeGitHubAscii
 	b := convert(c, mconf, content)
 	got := string(b.Bytes())
 
--- a/markup/goldmark/goldmark_config/config.go
+++ b/markup/goldmark/goldmark_config/config.go
@@ -14,6 +14,11 @@
 // Package goldmark_config holds Goldmark related configuration.
 package goldmark_config
 
+const (
+	AutoHeadingIDTypeGitHub      = "github"
+	AutoHeadingIDTypeGitHubAscii = "github-ascii"
+)
+
 // DefaultConfig holds the default Goldmark configuration.
 var Default = Config{
 	Extensions: Extensions{
@@ -29,8 +34,9 @@
 		Unsafe: false,
 	},
 	Parser: Parser{
-		AutoHeadingID: true,
-		Attribute:     true,
+		AutoHeadingID:     true,
+		AutoHeadingIDType: AutoHeadingIDTypeGitHub,
+		Attribute:         true,
 	},
 }
 
@@ -69,9 +75,10 @@
 	// auto generated heading ids.
 	AutoHeadingID bool
 
-	// When AutoHeadingID is enabled this will generate IDs with Ascii
-	// characters only.
-	AutoHeadingIDAsciiOnly bool
+	// The strategy to use when generating heading IDs.
+	// Available options are "github", "github-ascii".
+	// Default is "github", which will create GitHub-compatible anchor names.
+	AutoHeadingIDType string
 
 	// Enables custom attributes.
 	Attribute bool