1import gleam/list
2import nibble/lexer.{type Token, Keep}
3
4pub fn chars() -> lexer.Lexer(String, Nil) {
5 lexer.simple([lexer.custom(fn(_, lexeme, _) { Keep(lexeme, Nil) })])
6}
7
8pub fn run(
9 lexer: lexer.Lexer(String, Nil),
10 on input: String,
11) -> List(Token(String)) {
12 let assert Ok(tokens) = lexer.run(input, lexer)
13
14 // Nibble's lexer prepends an empty string at the start of each line.
15 // Filter out all empty tokens.
16 tokens
17 |> list.filter(fn(token) { token.lexeme != "" })
18}