javascript_lexer 0.1.8

Javascript lexer
extern crate javascript_lexer;
#[cfg(test)]
#[macro_use]
extern crate pretty_assertions;

use javascript_lexer::{
    internship,
    token::{Number, Token},
    Lexer,
};

#[test]
fn simple_js_example() {
    let parsed = Lexer::lex_tokens(
        "
    function a(a1, b1) {
        let a = \"adan \\n\";
        const b = \"dada\\b\\t\";
        var e, f, g = 1.2;
        var c = 'adad'
    }

    a(1, \"ddada\");
    ",
    )
    .unwrap();
    assert_eq!(
        parsed,
        vec![
            Token::LineTerminator,
            Token::KFunction,
            Token::IdentifierName(internship::IStr::new("a")),
            Token::LRound,
            Token::IdentifierName(internship::IStr::new("a1")),
            Token::Comma,
            Token::IdentifierName(internship::IStr::new("b1")),
            Token::RRound,
            Token::LCurly,
            Token::LineTerminator,
            Token::KLet,
            Token::IdentifierName(internship::IStr::new("a")),
            Token::Assign,
            Token::StringLiteral(String::from("adan \n")),
            Token::Semicolon,
            Token::LineTerminator,
            Token::KConst,
            Token::IdentifierName(internship::IStr::new("b")),
            Token::Assign,
            Token::StringLiteral(String::from("dada\u{8}\t")),
            Token::Semicolon,
            Token::LineTerminator,
            Token::KVar,
            Token::IdentifierName(internship::IStr::new("e")),
            Token::Comma,
            Token::IdentifierName(internship::IStr::new("f")),
            Token::Comma,
            Token::IdentifierName(internship::IStr::new("g")),
            Token::Assign,
            Token::NumericLiteral(Number::new(1, 2, 1, 10)),
            Token::Semicolon,
            Token::LineTerminator,
            Token::KVar,
            Token::IdentifierName(internship::IStr::new("c")),
            Token::Assign,
            Token::StringLiteral(String::from("adad")),
            Token::LineTerminator,
            Token::RCurly,
            Token::LineTerminator,
            Token::LineTerminator,
            Token::IdentifierName(internship::IStr::new("a")),
            Token::LRound,
            Token::NumericLiteral(Number::new(1, 0, 1, 10)),
            Token::Comma,
            Token::StringLiteral(String::from("ddada")),
            Token::RRound,
            Token::Semicolon,
            Token::LineTerminator,
            Token::EOF
        ]
    );
}