summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/gomarkdown/markdown/parser/parser.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2021-10-17 00:47:22 +0200
committerGitHub <noreply@github.com>2021-10-17 00:47:22 +0200
commit4dd8bae5c91fa4aef09d865d8fef1acd84f90925 (patch)
treeffad9b242daccaf8c86d1c1fbd59032302bd3be9 /vendor/github.com/gomarkdown/markdown/parser/parser.go
parent7ae45c42e712bd0e66c101f3f714c05aa1dc2104 (diff)
downloadmatterbridge-msglm-4dd8bae5c91fa4aef09d865d8fef1acd84f90925.tar.gz
matterbridge-msglm-4dd8bae5c91fa4aef09d865d8fef1acd84f90925.tar.bz2
matterbridge-msglm-4dd8bae5c91fa4aef09d865d8fef1acd84f90925.zip
Update dependencies (#1610)
* Update dependencies * Update module to go 1.17
Diffstat (limited to 'vendor/github.com/gomarkdown/markdown/parser/parser.go')
-rw-r--r--vendor/github.com/gomarkdown/markdown/parser/parser.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/vendor/github.com/gomarkdown/markdown/parser/parser.go b/vendor/github.com/gomarkdown/markdown/parser/parser.go
index c7302dfd..7712a29f 100644
--- a/vendor/github.com/gomarkdown/markdown/parser/parser.go
+++ b/vendor/github.com/gomarkdown/markdown/parser/parser.go
@@ -6,6 +6,7 @@ package parser
import (
"bytes"
"fmt"
+ "strconv"
"strings"
"unicode/utf8"
@@ -113,6 +114,10 @@ type Parser struct {
attr *ast.Attribute
includeStack *incStack
+
+ // collect headings where we auto-generated id so that we can
+ // ensure they are unique at the end
+ allHeadingsWithAutoID []*ast.Heading
}
// New creates a markdown parser with CommonExtensions.
@@ -282,6 +287,25 @@ func (p *Parser) Parse(input []byte) ast.Node {
if p.Opts.Flags&SkipFootnoteList == 0 {
p.parseRefsToAST()
}
+
+ // ensure HeadingIDs generated with AutoHeadingIDs are unique
+ // this is delayed here (as opposed to done when we create the id)
+ // so that we can preserve more original ids when there are conflicts
+ taken := map[string]bool{}
+ for _, h := range p.allHeadingsWithAutoID {
+ id := h.HeadingID
+ if id == "" {
+ continue
+ }
+ n := 0
+ for taken[id] {
+ n++
+ id = h.HeadingID + "-" + strconv.Itoa(n)
+ }
+ h.HeadingID = id
+ taken[id] = true
+ }
+
return p.Doc
}