aboutsummaryrefslogtreecommitdiff
path: root/mardown/lexer.go
diff options
context:
space:
mode:
Diffstat (limited to 'mardown/lexer.go')
-rw-r--r--mardown/lexer.go15
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
}