diff options
Diffstat (limited to 'vendor/github.com/yuin/goldmark/parser')
6 files changed, 27 insertions, 39 deletions
diff --git a/vendor/github.com/yuin/goldmark/parser/code_block.go b/vendor/github.com/yuin/goldmark/parser/code_block.go index d99146c52..5a2401695 100644 --- a/vendor/github.com/yuin/goldmark/parser/code_block.go +++ b/vendor/github.com/yuin/goldmark/parser/code_block.go @@ -37,7 +37,7 @@ func (b *codeBlockParser) Open(parent ast.Node, reader text.Reader, pc Context) } segment.ForceNewline = true node.Lines().Append(segment) - reader.Advance(segment.Len() - 1) + reader.AdvanceToEOL() return node, NoChildren } @@ -62,7 +62,7 @@ func (b *codeBlockParser) Continue(node ast.Node, reader text.Reader, pc Context segment.ForceNewline = true node.Lines().Append(segment) - reader.Advance(segment.Len() - 1) + reader.AdvanceToEOL() return Continue | NoChildren } diff --git a/vendor/github.com/yuin/goldmark/parser/html_block.go b/vendor/github.com/yuin/goldmark/parser/html_block.go index 09dc21f42..262ef9325 100644 --- a/vendor/github.com/yuin/goldmark/parser/html_block.go +++ b/vendor/github.com/yuin/goldmark/parser/html_block.go @@ -150,7 +150,7 @@ func (b *htmlBlockParser) Open(parent ast.Node, reader text.Reader, pc Context) } } if node != nil { - reader.Advance(segment.Len() - util.TrimRightSpaceLength(line)) + reader.AdvanceToEOL() node.Lines().Append(segment) return node, NoChildren } @@ -173,7 +173,7 @@ func (b *htmlBlockParser) Continue(node ast.Node, reader text.Reader, pc Context } if htmlBlockType1CloseRegexp.Match(line) { htmlBlock.ClosureLine = segment - reader.Advance(segment.Len() - util.TrimRightSpaceLength(line)) + reader.AdvanceToEOL() return Close } case ast.HTMLBlockType2: @@ -202,7 +202,7 @@ func (b *htmlBlockParser) Continue(node ast.Node, reader text.Reader, pc Context } if bytes.Contains(line, closurePattern) { htmlBlock.ClosureLine = segment - reader.Advance(segment.Len()) + reader.AdvanceToEOL() return Close } @@ -212,7 +212,7 @@ func (b *htmlBlockParser) Continue(node ast.Node, reader text.Reader, pc Context } } node.Lines().Append(segment) - reader.Advance(segment.Len() - util.TrimRightSpaceLength(line)) + reader.AdvanceToEOL() return Continue | NoChildren } diff --git a/vendor/github.com/yuin/goldmark/parser/list_item.go b/vendor/github.com/yuin/goldmark/parser/list_item.go index 2206ad908..f4d7da4a7 100644 --- a/vendor/github.com/yuin/goldmark/parser/list_item.go +++ b/vendor/github.com/yuin/goldmark/parser/list_item.go @@ -53,7 +53,7 @@ func (b *listItemParser) Open(parent ast.Node, reader text.Reader, pc Context) ( func (b *listItemParser) Continue(node ast.Node, reader text.Reader, pc Context) State { line, _ := reader.PeekLine() if util.IsBlank(line) { - reader.Advance(len(line) - 1) + reader.AdvanceToEOL() return Continue | HasChildren } diff --git a/vendor/github.com/yuin/goldmark/parser/paragraph.go b/vendor/github.com/yuin/goldmark/parser/paragraph.go index 9d3fa38e0..801b0df56 100644 --- a/vendor/github.com/yuin/goldmark/parser/paragraph.go +++ b/vendor/github.com/yuin/goldmark/parser/paragraph.go @@ -29,7 +29,7 @@ func (b *paragraphParser) Open(parent ast.Node, reader text.Reader, pc Context) } node := ast.NewParagraph() node.Lines().Append(segment) - reader.Advance(segment.Len() - 1) + reader.AdvanceToEOL() return node, NoChildren } @@ -39,7 +39,7 @@ func (b *paragraphParser) Continue(node ast.Node, reader text.Reader, pc Context return Close } node.Lines().Append(segment) - reader.Advance(segment.Len() - 1) + reader.AdvanceToEOL() return Continue | NoChildren } diff --git a/vendor/github.com/yuin/goldmark/parser/parser.go b/vendor/github.com/yuin/goldmark/parser/parser.go index 7ec40b31a..78a6b2603 100644 --- a/vendor/github.com/yuin/goldmark/parser/parser.go +++ b/vendor/github.com/yuin/goldmark/parser/parser.go @@ -1030,47 +1030,35 @@ type lineStat struct { } func isBlankLine(lineNum, level int, stats []lineStat) bool { - ret := true - for i := len(stats) - 1 - level; i >= 0; i-- { - ret = false + l := len(stats) + if l == 0 { + return true + } + for i := l - 1 - level; i >= 0; i-- { s := stats[i] - if s.lineNum == lineNum { - if s.level < level && s.isBlank { - return true - } else if s.level == level { - return s.isBlank - } - } - if s.lineNum < lineNum { - return ret + if s.lineNum == lineNum && s.level <= level { + return s.isBlank + } else if s.lineNum < lineNum { + break } } - return ret + return false } func (p *parser) parseBlocks(parent ast.Node, reader text.Reader, pc Context) { - pc.SetOpenedBlocks([]Block{}) + pc.SetOpenedBlocks(nil) blankLines := make([]lineStat, 0, 128) - var isBlank bool for { // process blocks separated by blank lines - _, lines, ok := reader.SkipBlankLines() + _, _, ok := reader.SkipBlankLines() if !ok { return } - lineNum, _ := reader.Position() - if lines != 0 { - blankLines = blankLines[0:0] - l := len(pc.OpenedBlocks()) - for i := 0; i < l; i++ { - blankLines = append(blankLines, lineStat{lineNum - 1, i, lines != 0}) - } - } - isBlank = isBlankLine(lineNum-1, 0, blankLines) // first, we try to open blocks - if p.openBlocks(parent, isBlank, reader, pc) != newBlocksOpened { + if p.openBlocks(parent, true, reader, pc) != newBlocksOpened { return } reader.AdvanceLine() + blankLines = blankLines[0:0] for { // process opened blocks line by line openedBlocks := pc.OpenedBlocks() l := len(openedBlocks) @@ -1096,7 +1084,7 @@ func (p *parser) parseBlocks(parent ast.Node, reader text.Reader, pc Context) { // When current node is a container block and has no children, // we try to open new child nodes if state&HasChildren != 0 && i == lastIndex { - isBlank = isBlankLine(lineNum-1, i+1, blankLines) + isBlank := isBlankLine(lineNum-1, i+1, blankLines) p.openBlocks(be.Node, isBlank, reader, pc) break } @@ -1104,7 +1092,7 @@ func (p *parser) parseBlocks(parent ast.Node, reader text.Reader, pc Context) { } } // current node may be closed or lazy continuation - isBlank = isBlankLine(lineNum-1, i, blankLines) + isBlank := isBlankLine(lineNum-1, i, blankLines) thisParent := parent if i != 0 { thisParent = openedBlocks[i-1].Node diff --git a/vendor/github.com/yuin/goldmark/parser/thematic_break.go b/vendor/github.com/yuin/goldmark/parser/thematic_break.go index db20a1e7a..ea015c870 100644 --- a/vendor/github.com/yuin/goldmark/parser/thematic_break.go +++ b/vendor/github.com/yuin/goldmark/parser/thematic_break.go @@ -50,9 +50,9 @@ func (b *thematicBreakPraser) Trigger() []byte { } func (b *thematicBreakPraser) Open(parent ast.Node, reader text.Reader, pc Context) (ast.Node, State) { - line, segment := reader.PeekLine() + line, _ := reader.PeekLine() if isThematicBreak(line, reader.LineOffset()) { - reader.Advance(segment.Len() - 1) + reader.AdvanceToEOL() return ast.NewThematicBreak(), NoChildren } return nil, NoChildren |
