memos/plugin/gomark/parser/line_break.go
2023-12-12 23:38:43 +08:00

33 lines
659 B
Go

package parser
import (
"github.com/usememos/memos/plugin/gomark/ast"
"github.com/usememos/memos/plugin/gomark/parser/tokenizer"
)
type LineBreakParser struct{}
var defaultLineBreakParser = &LineBreakParser{}
func NewLineBreakParser() *LineBreakParser {
return defaultLineBreakParser
}
func (*LineBreakParser) Match(tokens []*tokenizer.Token) (int, bool) {
if len(tokens) == 0 {
return 0, false
}
if tokens[0].Type != tokenizer.Newline {
return 0, false
}
return 1, true
}
func (p *LineBreakParser) Parse(tokens []*tokenizer.Token) ast.Node {
size, ok := p.Match(tokens)
if size == 0 || !ok {
return nil
}
return ast.NewLineBreak()
}