A JavaScript lexer and syntax highlighter for Gleam!
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

Lex strings

+27 -1
+27 -1
src/just.gleam
··· 339 339 do_tokenise(lexer, [token, ..tokens]) 340 340 } 341 341 342 + "'" as quote <> source | "\"" as quote <> source -> { 343 + let #(lexer, string) = lex_string(advance(lexer, source), quote, "") 344 + do_tokenise(lexer, [token.String(quote, string), ..tokens]) 345 + } 346 + 342 347 _ -> list.reverse(tokens) 348 + } 349 + } 350 + 351 + fn lex_string(lexer: Lexer, quote: String, contents: String) -> #(Lexer, String) { 352 + case string.pop_grapheme(lexer.source) { 353 + Error(_) -> #(lexer, contents) 354 + Ok(#(character, source)) if character == quote -> #( 355 + advance(lexer, source), 356 + contents, 357 + ) 358 + Ok(#("\\", source)) -> 359 + case string.pop_grapheme(source) { 360 + Error(_) -> #(lexer, contents) 361 + Ok(#(character, source)) -> 362 + lex_string( 363 + advance(lexer, source), 364 + quote, 365 + contents <> "\\" <> character, 366 + ) 367 + } 368 + Ok(#(character, source)) -> 369 + lex_string(advance(lexer, source), quote, contents <> character) 343 370 } 344 371 } 345 372 ··· 452 479 453 480 fn lex_until_end_of_line(lexer: Lexer, lexed: String) -> #(Lexer, String) { 454 481 case lexer.source { 455 - "" -> #(lexer, lexed) 456 482 "\n" <> source 457 483 | "\r" <> source 458 484 | "\u{2028}" <> source