diff options
| -rw-r--r-- | go.mod | 2 | ||||
| -rw-r--r-- | go.sum | 4 | ||||
| -rw-r--r-- | vendor/github.com/yuin/goldmark/ast/ast.go | 15 | ||||
| -rw-r--r-- | vendor/github.com/yuin/goldmark/ast/block.go | 49 | ||||
| -rw-r--r-- | vendor/github.com/yuin/goldmark/ast/inline.go | 32 | ||||
| -rw-r--r-- | vendor/github.com/yuin/goldmark/parser/code_block.go | 2 | ||||
| -rw-r--r-- | vendor/github.com/yuin/goldmark/parser/fcode_block.go | 1 | ||||
| -rw-r--r-- | vendor/github.com/yuin/goldmark/parser/parser.go | 6 | ||||
| -rw-r--r-- | vendor/github.com/yuin/goldmark/renderer/html/html.go | 15 | ||||
| -rw-r--r-- | vendor/github.com/yuin/goldmark/text/segment.go | 26 | ||||
| -rw-r--r-- | vendor/modules.txt | 2 | 
11 files changed, 116 insertions, 38 deletions
| @@ -63,7 +63,7 @@ require (  	github.com/uptrace/bun/dialect/sqlitedialect v1.2.1  	github.com/uptrace/bun/extra/bunotel v1.2.1  	github.com/wagslane/go-password-validator v0.3.0 -	github.com/yuin/goldmark v1.7.6 +	github.com/yuin/goldmark v1.7.8  	go.opentelemetry.io/otel v1.29.0  	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0  	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 @@ -621,8 +621,8 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de  github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=  github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=  github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark v1.7.6 h1:cZgJxVh5mL5cu8KOnwxvFJy5TFB0BHUskZZyq7TYbDg= -github.com/yuin/goldmark v1.7.6/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= +github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic= +github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=  gitlab.com/NyaaaWhatsUpDoc/sqlite v1.33.1-concurrency-workaround h1:pFMJnlc1PuH+jcVz4vz53vcpnoZG+NqFBr3qikDmEB4=  gitlab.com/NyaaaWhatsUpDoc/sqlite v1.33.1-concurrency-workaround/go.mod h1:pXV2xHxhzXZsgT/RtTFAPY6JJDEvOTcTdwADQCCWD4k=  go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= diff --git a/vendor/github.com/yuin/goldmark/ast/ast.go b/vendor/github.com/yuin/goldmark/ast/ast.go index 67bb0da56..36ba606f7 100644 --- a/vendor/github.com/yuin/goldmark/ast/ast.go +++ b/vendor/github.com/yuin/goldmark/ast/ast.go @@ -123,6 +123,12 @@ type Node interface {  	Dump(source []byte, level int)  	// Text returns text values of this node. +	// This method is valid only for some inline nodes. +	// If this node is a block node, Text returns a text value as reasonable as possible. +	// Notice that there are no 'correct' text values for the block nodes. +	// Result for the block nodes may be different from your expectation. +	// +	// Deprecated: Use other properties of the node to get the text value(i.e. Pragraph.Lines, Text.Value).  	Text(source []byte) []byte  	// HasBlankPreviousLines returns true if the row before this node is blank, @@ -374,11 +380,18 @@ func (n *BaseNode) OwnerDocument() *Document {  	return nil  } -// Text implements Node.Text  . +// Text implements Node.Text . +// +// Deprecated: Use other properties of the node to get the text value(i.e. Pragraph.Lines, Text.Value).  func (n *BaseNode) Text(source []byte) []byte {  	var buf bytes.Buffer  	for c := n.firstChild; c != nil; c = c.NextSibling() {  		buf.Write(c.Text(source)) +		if sb, ok := c.(interface { +			SoftLineBreak() bool +		}); ok && sb.SoftLineBreak() { +			buf.WriteByte('\n') +		}  	}  	return buf.Bytes()  } diff --git a/vendor/github.com/yuin/goldmark/ast/block.go b/vendor/github.com/yuin/goldmark/ast/block.go index 04d0d5443..eae7acdca 100644 --- a/vendor/github.com/yuin/goldmark/ast/block.go +++ b/vendor/github.com/yuin/goldmark/ast/block.go @@ -1,7 +1,6 @@  package ast  import ( -	"bytes"  	"fmt"  	"strings" @@ -48,15 +47,6 @@ func (b *BaseBlock) SetLines(v *textm.Segments) {  	b.lines = v  } -// Text implements Node.Text. -func (b *BaseBlock) Text(source []byte) []byte { -	var buf bytes.Buffer -	for _, line := range b.Lines().Sliced(0, b.Lines().Len()) { -		buf.Write(line.Value(source)) -	} -	return buf.Bytes() -} -  // A Document struct is a root node of Markdown text.  type Document struct {  	BaseBlock @@ -140,6 +130,13 @@ func (n *TextBlock) Kind() NodeKind {  	return KindTextBlock  } +// Text implements Node.Text. +// +// Deprecated: Use other properties of the node to get the text value(i.e. TextBlock.Lines). +func (n *TextBlock) Text(source []byte) []byte { +	return n.Lines().Value(source) +} +  // NewTextBlock returns a new TextBlock node.  func NewTextBlock() *TextBlock {  	return &TextBlock{ @@ -165,6 +162,13 @@ func (n *Paragraph) Kind() NodeKind {  	return KindParagraph  } +// Text implements Node.Text. +// +// Deprecated: Use other properties of the node to get the text value(i.e. Paragraph.Lines). +func (n *Paragraph) Text(source []byte) []byte { +	return n.Lines().Value(source) +} +  // NewParagraph returns a new Paragraph node.  func NewParagraph() *Paragraph {  	return &Paragraph{ @@ -259,6 +263,13 @@ func (n *CodeBlock) Kind() NodeKind {  	return KindCodeBlock  } +// Text implements Node.Text. +// +// Deprecated: Use other properties of the node to get the text value(i.e. CodeBlock.Lines). +func (n *CodeBlock) Text(source []byte) []byte { +	return n.Lines().Value(source) +} +  // NewCodeBlock returns a new CodeBlock node.  func NewCodeBlock() *CodeBlock {  	return &CodeBlock{ @@ -314,6 +325,13 @@ func (n *FencedCodeBlock) Kind() NodeKind {  	return KindFencedCodeBlock  } +// Text implements Node.Text. +// +// Deprecated: Use other properties of the node to get the text value(i.e. FencedCodeBlock.Lines). +func (n *FencedCodeBlock) Text(source []byte) []byte { +	return n.Lines().Value(source) +} +  // NewFencedCodeBlock return a new FencedCodeBlock node.  func NewFencedCodeBlock(info *Text) *FencedCodeBlock {  	return &FencedCodeBlock{ @@ -508,6 +526,17 @@ func (n *HTMLBlock) Kind() NodeKind {  	return KindHTMLBlock  } +// Text implements Node.Text. +// +// Deprecated: Use other properties of the node to get the text value(i.e. HTMLBlock.Lines). +func (n *HTMLBlock) Text(source []byte) []byte { +	ret := n.Lines().Value(source) +	if n.HasClosure() { +		ret = append(ret, n.ClosureLine.Value(source)...) +	} +	return ret +} +  // NewHTMLBlock returns a new HTMLBlock node.  func NewHTMLBlock(typ HTMLBlockType) *HTMLBlock {  	return &HTMLBlock{ diff --git a/vendor/github.com/yuin/goldmark/ast/inline.go b/vendor/github.com/yuin/goldmark/ast/inline.go index 7e4c51f23..613eb1edc 100644 --- a/vendor/github.com/yuin/goldmark/ast/inline.go +++ b/vendor/github.com/yuin/goldmark/ast/inline.go @@ -143,17 +143,25 @@ func (n *Text) Merge(node Node, source []byte) bool {  }  // Text implements Node.Text. +// +// Deprecated: Use other properties of the node to get the text value(i.e. Text.Value).  func (n *Text) Text(source []byte) []byte {  	return n.Segment.Value(source)  } +// Value returns a value of this node. +// SoftLineBreaks are not included in the returned value. +func (n *Text) Value(source []byte) []byte { +	return n.Segment.Value(source) +} +  // Dump implements Node.Dump.  func (n *Text) Dump(source []byte, level int) {  	fs := textFlagsString(n.flags)  	if len(fs) != 0 {  		fs = "(" + fs + ")"  	} -	fmt.Printf("%sText%s: \"%s\"\n", strings.Repeat("    ", level), fs, strings.TrimRight(string(n.Text(source)), "\n")) +	fmt.Printf("%sText%s: \"%s\"\n", strings.Repeat("    ", level), fs, strings.TrimRight(string(n.Value(source)), "\n"))  }  // KindText is a NodeKind of the Text node. @@ -258,6 +266,8 @@ func (n *String) SetCode(v bool) {  }  // Text implements Node.Text. +// +// Deprecated: Use other properties of the node to get the text value(i.e. String.Value).  func (n *String) Text(source []byte) []byte {  	return n.Value  } @@ -492,15 +502,22 @@ func (n *AutoLink) URL(source []byte) []byte {  		ret := make([]byte, 0, len(n.Protocol)+s.Len()+3)  		ret = append(ret, n.Protocol...)  		ret = append(ret, ':', '/', '/') -		ret = append(ret, n.value.Text(source)...) +		ret = append(ret, n.value.Value(source)...)  		return ret  	} -	return n.value.Text(source) +	return n.value.Value(source)  }  // Label returns a label of this node.  func (n *AutoLink) Label(source []byte) []byte { -	return n.value.Text(source) +	return n.value.Value(source) +} + +// Text implements Node.Text. +// +// Deprecated: Use other properties of the node to get the text value(i.e. AutoLink.Label). +func (n *AutoLink) Text(source []byte) []byte { +	return n.value.Value(source)  }  // NewAutoLink returns a new AutoLink node. @@ -541,6 +558,13 @@ func (n *RawHTML) Kind() NodeKind {  	return KindRawHTML  } +// Text implements Node.Text. +// +// Deprecated: Use other properties of the node to get the text value(i.e. RawHTML.Segments). +func (n *RawHTML) Text(source []byte) []byte { +	return n.Segments.Value(source) +} +  // NewRawHTML returns a new RawHTML node.  func NewRawHTML() *RawHTML {  	return &RawHTML{ diff --git a/vendor/github.com/yuin/goldmark/parser/code_block.go b/vendor/github.com/yuin/goldmark/parser/code_block.go index 732f18c65..d99146c52 100644 --- a/vendor/github.com/yuin/goldmark/parser/code_block.go +++ b/vendor/github.com/yuin/goldmark/parser/code_block.go @@ -35,6 +35,7 @@ func (b *codeBlockParser) Open(parent ast.Node, reader text.Reader, pc Context)  	if segment.Padding != 0 {  		preserveLeadingTabInCodeBlock(&segment, reader, 0)  	} +	segment.ForceNewline = true  	node.Lines().Append(segment)  	reader.Advance(segment.Len() - 1)  	return node, NoChildren @@ -59,6 +60,7 @@ func (b *codeBlockParser) Continue(node ast.Node, reader text.Reader, pc Context  		preserveLeadingTabInCodeBlock(&segment, reader, 0)  	} +	segment.ForceNewline = true  	node.Lines().Append(segment)  	reader.Advance(segment.Len() - 1)  	return Continue | NoChildren diff --git a/vendor/github.com/yuin/goldmark/parser/fcode_block.go b/vendor/github.com/yuin/goldmark/parser/fcode_block.go index e51a35ace..953b8dcba 100644 --- a/vendor/github.com/yuin/goldmark/parser/fcode_block.go +++ b/vendor/github.com/yuin/goldmark/parser/fcode_block.go @@ -100,6 +100,7 @@ func (b *fencedCodeBlockParser) Continue(node ast.Node, reader text.Reader, pc C  	if padding != 0 {  		preserveLeadingTabInCodeBlock(&seg, reader, fdata.indent)  	} +	seg.ForceNewline = true // EOF as newline  	node.Lines().Append(seg)  	reader.AdvanceAndSetPadding(segment.Stop-segment.Start-pos-1, padding)  	return Continue | NoChildren diff --git a/vendor/github.com/yuin/goldmark/parser/parser.go b/vendor/github.com/yuin/goldmark/parser/parser.go index b59666c6d..b05db1356 100644 --- a/vendor/github.com/yuin/goldmark/parser/parser.go +++ b/vendor/github.com/yuin/goldmark/parser/parser.go @@ -878,12 +878,6 @@ func (p *parser) Parse(reader text.Reader, opts ...ParseOption) ast.Node {  	blockReader := text.NewBlockReader(reader.Source(), nil)  	p.walkBlock(root, func(node ast.Node) {  		p.parseBlock(blockReader, node, pc) -		lines := node.Lines() -		if lines != nil && lines.Len() != 0 { -			s := lines.At(lines.Len() - 1) -			s.EOB = true -			lines.Set(lines.Len()-1, s) -		}  	})  	for _, at := range p.astTransformers {  		at.Transform(root, reader, pc) diff --git a/vendor/github.com/yuin/goldmark/renderer/html/html.go b/vendor/github.com/yuin/goldmark/renderer/html/html.go index 9ebd0a371..aac8d2dd7 100644 --- a/vendor/github.com/yuin/goldmark/renderer/html/html.go +++ b/vendor/github.com/yuin/goldmark/renderer/html/html.go @@ -680,7 +680,7 @@ func (r *Renderer) renderImage(w util.BufWriter, source []byte, node ast.Node, e  		_, _ = w.Write(util.EscapeHTML(util.URLEscape(n.Destination, true)))  	}  	_, _ = w.WriteString(`" alt="`) -	r.renderAttribute(w, source, n) +	r.renderTexts(w, source, n)  	_ = w.WriteByte('"')  	if n.Title != nil {  		_, _ = w.WriteString(` title="`) @@ -737,7 +737,7 @@ func (r *Renderer) renderText(w util.BufWriter, source []byte, node ast.Node, en  			if r.EastAsianLineBreaks != EastAsianLineBreaksNone && len(value) != 0 {  				sibling := node.NextSibling()  				if sibling != nil && sibling.Kind() == ast.KindText { -					if siblingText := sibling.(*ast.Text).Text(source); len(siblingText) != 0 { +					if siblingText := sibling.(*ast.Text).Value(source); len(siblingText) != 0 {  						thisLastRune := util.ToRune(value, len(value)-1)  						siblingFirstRune, _ := utf8.DecodeRune(siblingText)  						if r.EastAsianLineBreaks.softLineBreak(thisLastRune, siblingFirstRune) { @@ -770,19 +770,14 @@ func (r *Renderer) renderString(w util.BufWriter, source []byte, node ast.Node,  	return ast.WalkContinue, nil  } -func (r *Renderer) renderAttribute(w util.BufWriter, source []byte, n ast.Node) { +func (r *Renderer) renderTexts(w util.BufWriter, source []byte, n ast.Node) {  	for c := n.FirstChild(); c != nil; c = c.NextSibling() {  		if s, ok := c.(*ast.String); ok {  			_, _ = r.renderString(w, source, s, true) -		} else if t, ok := c.(*ast.String); ok { +		} else if t, ok := c.(*ast.Text); ok {  			_, _ = r.renderText(w, source, t, true) -		} else if !c.HasChildren() { -			r.Writer.Write(w, c.Text(source)) -			if t, ok := c.(*ast.Text); ok && t.SoftLineBreak() { -				_ = w.WriteByte('\n') -			}  		} else { -			r.renderAttribute(w, source, c) +			r.renderTexts(w, source, c)  		}  	}  } diff --git a/vendor/github.com/yuin/goldmark/text/segment.go b/vendor/github.com/yuin/goldmark/text/segment.go index 83c875bcb..93fbf1994 100644 --- a/vendor/github.com/yuin/goldmark/text/segment.go +++ b/vendor/github.com/yuin/goldmark/text/segment.go @@ -20,8 +20,19 @@ type Segment struct {  	// Padding is a padding length of the segment.  	Padding int -	// EOB is true if the segment is end of the block. -	EOB bool +	// ForceNewline is true if the segment should be ended with a newline. +	// Some elements(i.e. CodeBlock, FencedCodeBlock) does not trim trailing +	// newlines. Spec defines that EOF is treated as a newline, so we need to +	// add a newline to the end of the segment if it is not empty. +	// +	// i.e.: +	// +	//     ```go +	//     const test = "test" +	// +	// This code does not close the code block and ends with EOF. In this case, +	// we need to add a newline to the end of the last line like `const test = "test"\n`. +	ForceNewline bool  }  // NewSegment return a new Segment. @@ -52,7 +63,7 @@ func (t *Segment) Value(buffer []byte) []byte {  		result = append(result, bytes.Repeat(space, t.Padding)...)  		result = append(result, buffer[t.Start:t.Stop]...)  	} -	if t.EOB && len(result) > 0 && result[len(result)-1] != '\n' { +	if t.ForceNewline && len(result) > 0 && result[len(result)-1] != '\n' {  		result = append(result, '\n')  	}  	return result @@ -217,3 +228,12 @@ func (s *Segments) Unshift(v Segment) {  	s.values = append(s.values[0:1], s.values[0:]...)  	s.values[0] = v  } + +// Value returns a string value of the collection. +func (s *Segments) Value(buffer []byte) []byte { +	var result []byte +	for _, v := range s.values { +		result = append(result, v.Value(buffer)...) +	} +	return result +} diff --git a/vendor/modules.txt b/vendor/modules.txt index d41601709..beef3741d 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -954,7 +954,7 @@ github.com/vmihailenco/tagparser/v2/internal/parser  # github.com/wagslane/go-password-validator v0.3.0  ## explicit; go 1.16  github.com/wagslane/go-password-validator -# github.com/yuin/goldmark v1.7.6 +# github.com/yuin/goldmark v1.7.8  ## explicit; go 1.19  github.com/yuin/goldmark  github.com/yuin/goldmark/ast | 
