summaryrefslogtreecommitdiffstats
path: root/helpers/content.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-01-04 11:28:19 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-01-04 19:46:01 +0100
commita82d2700fcc772aada15d65b8f76913ca23f7404 (patch)
treefa1c09eb1523d7cda303982b5c08661af9a194d6 /helpers/content.go
parentae816452b171b6b6aabca6a7423ed28a653baaa2 (diff)
markup/goldmark: Make auto IDs GitHub compatible
You can turn off this behaviour: ```toml [markup] [markup.goldmark] [markup.goldmark.parser] autoHeadingIDAsciiOnly = true ``` Note that the `anchorize` now adapts its behaviour depending on the default Markdown handler. Fixes #6616
Diffstat (limited to 'helpers/content.go')
-rw-r--r--helpers/content.go20
1 files changed, 18 insertions, 2 deletions
diff --git a/helpers/content.go b/helpers/content.go
index 1c780fefe..e61888357 100644
--- a/helpers/content.go
+++ b/helpers/content.go
@@ -48,8 +48,9 @@ var (
// ContentSpec provides functionality to render markdown content.
type ContentSpec struct {
- Converters markup.ConverterProvider
- MardownConverter converter.Converter // Markdown converter with no document context
+ Converters markup.ConverterProvider
+ MardownConverter converter.Converter // Markdown converter with no document context
+ anchorNameSanitizer converter.AnchorNameSanitizer
// SummaryLength is the length of the summary that Hugo extracts from a content.
summaryLength int
@@ -91,6 +92,17 @@ func NewContentSpec(cfg config.Provider, logger *loggers.Logger, contentFs afero
return nil, err
}
spec.MardownConverter = conv
+ if as, ok := conv.(converter.AnchorNameSanitizer); ok {
+ spec.anchorNameSanitizer = as
+ } else {
+ // Use Goldmark's sanitizer
+ p := converterProvider.Get("goldmark")
+ conv, err := p.New(converter.DocumentContext{})
+ if err != nil {
+ return nil, err
+ }
+ spec.anchorNameSanitizer = conv.(converter.AnchorNameSanitizer)
+ }
return spec, nil
}
@@ -192,6 +204,10 @@ func (c *ContentSpec) RenderMarkdown(src []byte) ([]byte, error) {
return b.Bytes(), nil
}
+func (c *ContentSpec) SanitizeAnchorName(s string) string {
+ return c.anchorNameSanitizer.SanitizeAnchorName(s)
+}
+
func (c *ContentSpec) ResolveMarkup(in string) string {
in = strings.ToLower(in)
switch in {