30 lines
719 B
Go
30 lines
719 B
Go
|
package chroma
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/alecthomas/assert"
|
||
|
)
|
||
|
|
||
|
func TestRemappingLexer(t *testing.T) {
|
||
|
var lexer Lexer = MustNewLexer(nil, Rules{
|
||
|
"root": {
|
||
|
{`\s+`, Whitespace, nil},
|
||
|
{`\w+`, Name, nil},
|
||
|
},
|
||
|
})
|
||
|
lexer = TypeRemappingLexer(lexer, TypeMapping{
|
||
|
{Name, Keyword, []string{"if", "else"}},
|
||
|
})
|
||
|
|
||
|
it, err := lexer.Tokenise(nil, `if true then print else end`)
|
||
|
assert.NoError(t, err)
|
||
|
expected := []*Token{
|
||
|
{Keyword, "if"}, {TextWhitespace, " "}, {Name, "true"}, {TextWhitespace, " "}, {Name, "then"},
|
||
|
{TextWhitespace, " "}, {Name, "print"}, {TextWhitespace, " "}, {Keyword, "else"},
|
||
|
{TextWhitespace, " "}, {Name, "end"},
|
||
|
}
|
||
|
actual := it.Tokens()
|
||
|
assert.Equal(t, expected, actual)
|
||
|
}
|