From de79887331bcdcba67361f9a49a309770228b301 Mon Sep 17 00:00:00 2001 From: Kasper Date: Fri, 30 Dec 2022 11:04:47 +0100 Subject: [PATCH] Add `marathon` --- src/lexer.rs | 2 ++ src/units.rs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/lexer.rs b/src/lexer.rs index efc9869..7f65949 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -240,6 +240,7 @@ fn parse_word(word: &str, lexer: &mut Lexer) -> Result<(), String> { "ft" | "foot" | "feet" => Token::Unit(Foot), "yd" | "yard" | "yards" => Token::Unit(Yard), "mi" | "mile" | "miles" => Token::Unit(Mile), + "marathon" | "marathons" => Token::Unit(Marathon), "nmi" => Token::Unit(NauticalMile), "nautical" => { match read_word("", lexer).as_str() { @@ -980,6 +981,7 @@ mod tests { }; run_lex("88 kilometres * 2", vec![numtok!(88), Token::Unit(Kilometer), Token::Operator(Multiply), numtok!(2)]); + run_lex("0.5 marathon", vec![numtok!(0.5), Token::Unit(Marathon)]); run_lex("100 nmi", vec![numtok!(100), Token::Unit(NauticalMile)]); run_lex("101 nautical miles", vec![numtok!(101), Token::Unit(NauticalMile)]); run_lex("2 lightyears", vec![numtok!(2), Token::Unit(LightYear)]); diff --git a/src/units.rs b/src/units.rs index c97253d..d5c39ad 100644 --- a/src/units.rs +++ b/src/units.rs @@ -101,6 +101,7 @@ create_units!( Yard: (Length, d128!(914.4)), Mile: (Length, d128!(1609344)), // 1-dimensional only: + Marathon: (Length, d128!(42195000)), NauticalMile: (Length, d128!(1852000)), LightYear: (Length, d128!(9460730472580800000)), LightSecond: (Length, d128!(299792458000)), @@ -845,6 +846,7 @@ mod tests { assert_float_eq!(convert_test(12.0, Inch, Foot), 1.0); assert_float_eq!(convert_test(3.0, Foot, Yard), 1.0); assert_float_eq!(convert_test(1760.0, Yard, Mile), 1.0); + assert_float_eq!(convert_test(42195.0, Meter, Marathon), 1.0); assert_float_eq!(convert_test(1852.0, Meter, NauticalMile), 1.0); assert_float_eq!(convert_test(9460730472580800.0, Meter, LightYear), 1.0); assert_float_eq!(convert_test(299792458.0, Meter, LightSecond), 1.0);