diff --git a/src/lexer.rs b/src/lexer.rs index 9529871..c900d29 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -57,7 +57,7 @@ pub fn lex(input: &str) -> Result { let string = &input[start_index..=end_index]; match string.trim_end() { // allow for two-word units - "nautical" | "light" | "sq" | "square" | "cubic" => { + "nautical" | "light" | "sq" | "square" | "cubic" | "metric" => { byte_index += current_char.len_utf8(); chars.next(); end_index += 1; @@ -126,7 +126,8 @@ pub fn lex(input: &str) -> Result { "yd" | "yard" | "yards" => tokens.push(Token::Unit(Yard)), "mi" | "mile" | "miles" => tokens.push(Token::Unit(Mile)), "nmi" | "nautical mile" | "nautical miles" => tokens.push(Token::Unit(NauticalMile)), - "lightyear" | "lightyears" | "light year" | "light years" => tokens.push(Token::Unit(LightYear)), + "ly" | "lightyear" | "lightyears" | "light yr" | "light yrs" | "light year" | "light years" => tokens.push(Token::Unit(LightYear)), + "lightsec" | "lightsecs" | "lightsecond" | "lightseconds" | "light sec" | "light secs" | "light second" | "light seconds" => tokens.push(Token::Unit(LightYear)), "sqmm" | "sq mm" | "sq millimeter" | "sq millimeters" => tokens.push(Token::Unit(SquareMillimeter)), "sqcm" | "sq cm" | "sq centimeter" | "sq centimeters" => tokens.push(Token::Unit(SquareCentimeter)), diff --git a/src/units.rs b/src/units.rs index f552252..a5906b9 100644 --- a/src/units.rs +++ b/src/units.rs @@ -268,6 +268,7 @@ mod tests { assert_eq!(convert_test(1760.0, Yard, Mile), 1.0); assert_eq!(convert_test(1852.0, Meter, NauticalMile), 1.0); assert_eq!(convert_test(9460730472580800.0, Meter, LightYear), 1.0); + assert_eq!(convert_test(299792458.0, Meter, LightSecond), 1.0); assert_eq!(convert_test(100.0, SquareMillimeter, SquareCentimeter), 1.0); assert_eq!(convert_test(100.0, SquareCentimeter, SquareDecimeter), 1.0);