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}