From c71a97b8372876d63528b54cedecf1104530fe3b Mon Sep 17 00:00:00 2001 From: yuin Date: Sun, 25 Sep 2022 23:47:23 +0900 Subject: [PATCH] Fixed bug related newline code --- extension/cjk_test.go | 21 +++++++++++++++++++++ parser/parser.go | 34 +++++++++++++++++----------------- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/extension/cjk_test.go b/extension/cjk_test.go index 1903ff1..fe12c00 100644 --- a/extension/cjk_test.go +++ b/extension/cjk_test.go @@ -176,4 +176,25 @@ func TestEastAsianLineBreaks(t *testing.T) { }, t, ) + + markdown = goldmark.New(goldmark.WithRendererOptions( + html.WithXHTML(), + html.WithUnsafe(), + ), + goldmark.WithExtensions( + NewCJK(WithEastAsianLineBreaks()), + Linkify, + ), + ) + no = 7 + testutil.DoTestCase( + markdown, + testutil.MarkdownTestCase{ + No: no, + Description: "WithEastAsianLineBreaks and linkfy extension", + Markdown: "太郎は\\ **「こんにちわ」**\\ と言った\r\nんです", + Expected: "

太郎は\\ 「こんにちわ」\\ と言ったんです

", + }, + t, + ) } diff --git a/parser/parser.go b/parser/parser.go index f41e8a2..c8d8aed 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -567,16 +567,16 @@ type ASTTransformer interface { // DefaultBlockParsers returns a new list of default BlockParsers. // Priorities of default BlockParsers are: // -// SetextHeadingParser, 100 -// ThematicBreakParser, 200 -// ListParser, 300 -// ListItemParser, 400 -// CodeBlockParser, 500 -// ATXHeadingParser, 600 -// FencedCodeBlockParser, 700 -// BlockquoteParser, 800 -// HTMLBlockParser, 900 -// ParagraphParser, 1000 +// SetextHeadingParser, 100 +// ThematicBreakParser, 200 +// ListParser, 300 +// ListItemParser, 400 +// CodeBlockParser, 500 +// ATXHeadingParser, 600 +// FencedCodeBlockParser, 700 +// BlockquoteParser, 800 +// HTMLBlockParser, 900 +// ParagraphParser, 1000 func DefaultBlockParsers() []util.PrioritizedValue { return []util.PrioritizedValue{ util.Prioritized(NewSetextHeadingParser(), 100), @@ -595,11 +595,11 @@ func DefaultBlockParsers() []util.PrioritizedValue { // DefaultInlineParsers returns a new list of default InlineParsers. // Priorities of default InlineParsers are: // -// CodeSpanParser, 100 -// LinkParser, 200 -// AutoLinkParser, 300 -// RawHTMLParser, 400 -// EmphasisParser, 500 +// CodeSpanParser, 100 +// LinkParser, 200 +// AutoLinkParser, 300 +// RawHTMLParser, 400 +// EmphasisParser, 500 func DefaultInlineParsers() []util.PrioritizedValue { return []util.PrioritizedValue{ util.Prioritized(NewCodeSpanParser(), 100), @@ -613,7 +613,7 @@ func DefaultInlineParsers() []util.PrioritizedValue { // DefaultParagraphTransformers returns a new list of default ParagraphTransformers. // Priorities of default ParagraphTransformers are: // -// LinkReferenceParagraphTransformer, 100 +// LinkReferenceParagraphTransformer, 100 func DefaultParagraphTransformers() []util.PrioritizedValue { return []util.PrioritizedValue{ util.Prioritized(LinkReferenceParagraphTransformer, 100), @@ -1178,7 +1178,7 @@ func (p *parser) parseBlock(block text.BlockReader, parent ast.Node, pc Context) if c == '\n' { break } - isSpace := util.IsSpace(c) + isSpace := util.IsSpace(c) && c != '\r' && c != '\n' isPunct := util.IsPunct(c) if (isPunct && !escaped) || isSpace && !(escaped && p.escapedSpace) || i == 0 { parserChar := c