From 812c6c8c6cf0d72e0afd0560d31f001079cfec0f Mon Sep 17 00:00:00 2001 From: yuin Date: Fri, 14 Jun 2024 21:40:31 +0900 Subject: [PATCH] Fixes #455 --- .github/workflows/test.yaml | 6 ++++-- extension/_test/strikethrough.txt | 20 ++++++++++++++++---- extension/strikethrough.go | 3 ++- extension/table.go | 6 +++--- renderer/html/html.go | 2 +- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index c382846..d3e9276 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -5,7 +5,7 @@ jobs: strategy: fail-fast: false matrix: - go-version: [1.19.x, 1.20.x] + go-version: [1.21.x, 1.22.x] platform: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.platform }} steps: @@ -16,11 +16,13 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - name: Run lints - uses: golangci/golangci-lint-action@v3 + uses: golangci/golangci-lint-action@v6 with: version: latest if: "matrix.platform == 'ubuntu-latest'" # gofmt linter fails on Windows for CRLF problems - name: Run tests + env: + GOLDMARK_TEST_TIMEOUT_MULTIPLIER: 5 run: go test -v ./... -covermode=count -coverprofile=coverage.out -coverpkg=./... - name: Send coverage if: "matrix.platform == 'ubuntu-latest'" diff --git a/extension/_test/strikethrough.txt b/extension/_test/strikethrough.txt index e74f58d..5f37627 100644 --- a/extension/_test/strikethrough.txt +++ b/extension/_test/strikethrough.txt @@ -5,8 +5,6 @@

Hi Hello, world!

//= = = = = = = = = = = = = = = = = = = = = = = =// - - 2 //- - - - - - - - -// This ~~has a @@ -17,11 +15,25 @@ new paragraph~~.

new paragraph~~.

//= = = = = = = = = = = = = = = = = = = = = = = =// - - 3 //- - - - - - - - -// ~Hi~ Hello, world! //- - - - - - - - -//

Hi Hello, world!

//= = = = = = = = = = = = = = = = = = = = = = = =// + +4: Three or more tildes do not create a strikethrough +//- - - - - - - - -// +This will ~~~not~~~ strike. +//- - - - - - - - -// +

This will ~~~not~~~ strike.

+//= = = = = = = = = = = = = = = = = = = = = = = =// + +5: Leading three or more tildes do not create a strikethrough, create a code block +//- - - - - - - - -// +~~~Hi~~~ Hello, world! +//- - - - - - - - -// +
+//= = = = = = = = = = = = = = = = = = = = = = = =// + + diff --git a/extension/strikethrough.go b/extension/strikethrough.go index fbb099f..9fc0bec 100644 --- a/extension/strikethrough.go +++ b/extension/strikethrough.go @@ -47,9 +47,10 @@ func (s *strikethroughParser) Parse(parent gast.Node, block text.Reader, pc pars before := block.PrecendingCharacter() line, segment := block.PeekLine() node := parser.ScanDelimiter(line, before, 1, defaultStrikethroughDelimiterProcessor) - if node == nil { + if node == nil || node.OriginalLength > 2 || before == '~' { return nil } + node.Segment = segment.WithStop(segment.Start + node.OriginalLength) block.Advance(node.OriginalLength) pc.PushDelimiter(node) diff --git a/extension/table.go b/extension/table.go index 2fe7a51..617c7a3 100644 --- a/extension/table.go +++ b/extension/table.go @@ -492,7 +492,7 @@ func (r *TableHTMLRenderer) renderTableCell( tag = "th" } if entering { - fmt.Fprintf(w, "<%s", tag) + _, _ = fmt.Fprintf(w, "<%s", tag) if n.Alignment != ast.AlignNone { amethod := r.TableConfig.TableCellAlignMethod if amethod == TableCellAlignDefault { @@ -505,7 +505,7 @@ func (r *TableHTMLRenderer) renderTableCell( switch amethod { case TableCellAlignAttribute: if _, ok := n.AttributeString("align"); !ok { // Skip align render if overridden - fmt.Fprintf(w, ` align="%s"`, n.Alignment.String()) + _, _ = fmt.Fprintf(w, ` align="%s"`, n.Alignment.String()) } case TableCellAlignStyle: v, ok := n.AttributeString("style") @@ -528,7 +528,7 @@ func (r *TableHTMLRenderer) renderTableCell( } _ = w.WriteByte('>') } else { - fmt.Fprintf(w, "\n", tag) + _, _ = fmt.Fprintf(w, "\n", tag) } return gast.WalkContinue, nil } diff --git a/renderer/html/html.go b/renderer/html/html.go index 75ac6db..b1da368 100644 --- a/renderer/html/html.go +++ b/renderer/html/html.go @@ -445,7 +445,7 @@ func (r *Renderer) renderList(w util.BufWriter, source []byte, node ast.Node, en _ = w.WriteByte('<') _, _ = w.WriteString(tag) if n.IsOrdered() && n.Start != 1 { - fmt.Fprintf(w, " start=\"%d\"", n.Start) + _, _ = fmt.Fprintf(w, " start=\"%d\"", n.Start) } if n.Attributes() != nil { RenderAttributes(w, n, ListAttributeFilter)