summaryrefslogtreecommitdiff
path: root/vendor/github.com/yuin/goldmark/parser
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/yuin/goldmark/parser')
-rw-r--r--vendor/github.com/yuin/goldmark/parser/code_block.go4
-rw-r--r--vendor/github.com/yuin/goldmark/parser/html_block.go8
-rw-r--r--vendor/github.com/yuin/goldmark/parser/list_item.go2
-rw-r--r--vendor/github.com/yuin/goldmark/parser/paragraph.go4
-rw-r--r--vendor/github.com/yuin/goldmark/parser/parser.go44
-rw-r--r--vendor/github.com/yuin/goldmark/parser/thematic_break.go4
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