diff options
Diffstat (limited to 'mardown/lexer.go')
| -rw-r--r-- | mardown/lexer.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/mardown/lexer.go b/mardown/lexer.go index a7b364d..42519e7 100644 --- a/mardown/lexer.go +++ b/mardown/lexer.go @@ -12,6 +12,8 @@ const ( lexerHeader lexerType = "header" lexerQuote lexerType = "quote" + lexerExternal lexerType = "external" + lexerLiteral lexerType = "literal" ) @@ -38,6 +40,14 @@ func (l *lexers) Finished() bool { return l.current+1 >= len(l.lexers) } +func (l *lexers) String() string { + s := "Lexers[" + for _, l := range l.lexers { + s += l.String() + " " + } + return s + "]" +} + func lex(s string) *lexers { lxs := &lexers{current: -1} var lexs []lexer @@ -63,10 +73,15 @@ func lex(s string) *lexers { fn(c, lexerHeader) case '>': fn(c, lexerQuote) + case '[', ']', '(', ')', '!': + fn(c, lexerExternal) default: fn(c, lexerLiteral) } } + if len(previous) > 0 { + lexs = append(lexs, lexer{Type: currentType, Value: previous}) + } lxs.lexers = lexs return lxs } |
