Source File
delimiter.go
Belonging Package
github.com/yuin/goldmark/parser
package parser
import (
)
func ( *Delimiter) () {}
func ( *Delimiter) () ast.NodeKind {
return kindDelimiter
}
func ( *Delimiter) ( *Delimiter) int {
if (.CanClose || .CanOpen) && (.OriginalLength+.OriginalLength)%3 == 0 && .OriginalLength%3 != 0 {
return 0
}
if .Length >= 2 && .Length >= 2 {
return 2
}
return 1
}
func (, bool, int, byte, DelimiterProcessor) *Delimiter {
:= &Delimiter{
BaseInline: ast.BaseInline{},
CanOpen: ,
CanClose: ,
Length: ,
OriginalLength: ,
Char: ,
PreviousDelimiter: nil,
NextDelimiter: nil,
Processor: ,
}
return
}
func ( []byte, rune, int, DelimiterProcessor) *Delimiter {
:= 0
:= []
:=
if !.IsDelimiter() {
return nil
}
for ; < len() && == []; ++ {
}
if ( - ) >= {
:= rune(' ')
if != len() {
= util.ToRune(, )
}
, := false, false
:= util.IsPunctRune()
:= util.IsSpaceRune()
:= util.IsPunctRune()
:= util.IsSpaceRune()
:= ! &&
(! || || )
:= ! &&
(! || || )
if [] == '_' {
= && (! || )
= && (! || )
} else {
=
=
}
return NewDelimiter(, , -, , )
}
return nil
}
func ( ast.Node, Context) {
:= .LastDelimiter()
if == nil {
return
}
var *Delimiter
if != nil {
if != {
for := .PreviousSibling(); != nil; {
if , := .(*Delimiter); {
=
}
:= .PreviousSibling()
if == {
break
}
=
}
}
} else {
= .FirstDelimiter()
}
if == nil {
.ClearDelimiters()
return
}
for != nil {
if !.CanClose {
= .NextDelimiter
continue
}
:= 0
:= false
:= false
var *Delimiter
for = .PreviousDelimiter; != nil; = .PreviousDelimiter {
if .CanOpen && .Processor.CanOpenCloser(, ) {
= true
= .CalcComsumption()
if > 0 {
= true
break
}
}
}
if ! {
if ! && !.CanOpen {
.RemoveDelimiter()
}
= .NextDelimiter
continue
}
.ConsumeCharacters()
.ConsumeCharacters()
:= .Processor.OnMatch()
:= .Parent()
:= .NextSibling()
for != nil && != {
:= .NextSibling()
.AppendChild(, )
=
}
.InsertAfter(, , )
for := .NextDelimiter; != nil && != ; {
:= .NextDelimiter
.RemoveDelimiter()
=
}
if .Length == 0 {
.RemoveDelimiter()
}
if .Length == 0 {
:= .NextDelimiter
.RemoveDelimiter()
=
}
}
.ClearDelimiters()
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |