diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2026-06-09 21:09:39 +0200 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2026-06-09 21:09:39 +0200 |
| commit | 6903a774ecbbd05596adda5e2b5e18d58dd3a8f9 (patch) | |
| tree | f5d48f52f0da3da8d829436519bc66652bf41c64 /vendor/github.com/yuin/goldmark/parser/link.go | |
| parent | e75d9e371269a4e46bffa6b3dd1fc7d040e82750 (diff) | |
| download | gofu-6903a774ecbbd05596adda5e2b5e18d58dd3a8f9.tar.gz | |
bump all dependencies to their latest versions
Diffstat (limited to 'vendor/github.com/yuin/goldmark/parser/link.go')
| -rw-r--r-- | vendor/github.com/yuin/goldmark/parser/link.go | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/vendor/github.com/yuin/goldmark/parser/link.go b/vendor/github.com/yuin/goldmark/parser/link.go index 7390d7b..bd9cf8d 100644 --- a/vendor/github.com/yuin/goldmark/parser/link.go +++ b/vendor/github.com/yuin/goldmark/parser/link.go @@ -166,9 +166,10 @@ func (s *linkParser) Parse(parent ast.Node, block text.Reader, pc Context) ast.N l, pos := block.Position() var link *ast.Link var hasValue bool - if c == '(' { // normal link + switch c { + case '(': link = s.parseLink(parent, last, block, pc) - } else if c == '[' { // reference link + case '[': link, hasValue = s.parseReferenceLink(parent, last, block, pc) if link == nil && hasValue { ast.MergeOrReplaceTextSegment(last.Parent(), last, last.Segment) @@ -200,13 +201,18 @@ func (s *linkParser) Parse(parent ast.Node, block text.Reader, pc Context) ast.N s.processLinkLabel(parent, link, last, pc) link.Title = ref.Title() link.Destination = ref.Destination() + link.Reference = ast.NewReferenceLink(ast.ReferenceLinkShortcut, maybeReference) } + var n ast.Node if last.IsImage { last.Parent().RemoveChild(last.Parent(), last) - return ast.NewImage(link) + n = ast.NewImage(link) + } else { + last.Parent().RemoveChild(last.Parent(), last) + n = link } - last.Parent().RemoveChild(last.Parent(), last) - return link + n.(interface{ SetPos(int) }).SetPos(last.Segment.Start) + return n } func (s *linkParser) containsLink(n ast.Node) bool { @@ -262,11 +268,12 @@ func (s *linkParser) parseReferenceLink(parent ast.Node, last *linkLabelState, } var maybeReference []byte + refType := ast.ReferenceLinkFull if segments.Len() == 1 { // avoid allocate a new byte slice maybeReference = block.Value(segments.At(0)) } else { maybeReference = []byte{} - for i := 0; i < segments.Len(); i++ { + for i := range segments.Len() { s := segments.At(i) maybeReference = append(maybeReference, block.Value(s)...) } @@ -274,6 +281,7 @@ func (s *linkParser) parseReferenceLink(parent ast.Node, last *linkLabelState, if util.IsBlank(maybeReference) { // collapsed reference link s := text.NewSegment(last.Segment.Stop, orgpos.Start-1) maybeReference = block.Value(s) + refType = ast.ReferenceLinkCollapsed } // CommonMark spec says: // > A link label can have at most 999 characters inside the square brackets. @@ -290,6 +298,7 @@ func (s *linkParser) parseReferenceLink(parent ast.Node, last *linkLabelState, s.processLinkLabel(parent, link, last, pc) link.Title = ref.Title() link.Destination = ref.Destination() + link.Reference = ast.NewReferenceLink(refType, maybeReference) return link, true } @@ -388,7 +397,7 @@ func parseLinkTitle(block text.Reader) ([]byte, bool) { return block.Value(segments.At(0)), true } var title []byte - for i := 0; i < segments.Len(); i++ { + for i := range segments.Len() { s := segments.At(i) title = append(title, block.Value(s)...) } |
