diff --git a/src/lexer.rs b/src/lexer.rs index cc1fd4d..3abc4b1 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" | "metric" => { + "nautical" | "light" | "sq" | "square" | "cubic" | "metric" | "newton" => { byte_index += current_char.len_utf8(); chars.next(); end_index += 1; @@ -213,6 +213,7 @@ pub fn lex(input: &str) -> Result { "millijoule" | "millijoules" => tokens.push(Token::Unit(Millijoule)), "j"| "joule" | "joules" => tokens.push(Token::Unit(Joule)), + "nm" | "newton meter" | "newton meters" | "newton-meter" | "newton-meters" => tokens.push(Token::Unit(NewtonMeter)), "kj" | "kilojoule" | "kilojoules" => tokens.push(Token::Unit(Kilojoule)), "mj" | "megajoule" | "megajoules" => tokens.push(Token::Unit(Megajoule)), "gj" | "gigajoule" | "gigajoules" => tokens.push(Token::Unit(Gigajoule)), diff --git a/src/units.rs b/src/units.rs index 64eafcf..beef493 100644 --- a/src/units.rs +++ b/src/units.rs @@ -157,6 +157,7 @@ create_units!( Millijoule: (Energy, d128!(0.001)), Joule: (Energy, d128!(1)), + NewtonMeter: (Energy, d128!(1)), Kilojoule: (Energy, d128!(1000)), Megajoule: (Energy, d128!(1000000)), Gigajoule: (Energy, d128!(1000000000)), @@ -361,6 +362,7 @@ mod tests { assert_eq!(convert_test(1000.0, Millijoule, Joule), 1.0); assert_eq!(convert_test(1000.0, Joule, Kilojoule), 1.0); + assert_eq!(convert_test(1.0, NewtonMeter, Joule), 1.0); assert_eq!(convert_test(1000.0, Kilojoule, Megajoule), 1.0); assert_eq!(convert_test(1000.0, Megajoule, Gigajoule), 1.0); assert_eq!(convert_test(1000.0, Gigajoule, Terajoule), 1.0);