Add support for US liquid pints
This commit is contained in:
parent
6acd0d56a6
commit
5555d0712e
4 changed files with 35 additions and 0 deletions
|
@ -123,6 +123,11 @@ fn get_conversion(unit: NonMetric) -> Conversion {
|
||||||
from: imperial_gallon_from,
|
from: imperial_gallon_from,
|
||||||
to: MetricQuantity { amount: imperial_gallon_to, unit: Metric::Litre },
|
to: MetricQuantity { amount: imperial_gallon_to, unit: Metric::Litre },
|
||||||
},
|
},
|
||||||
|
NonMetric::USLiquidPint => Conversion {
|
||||||
|
offset: 0.0,
|
||||||
|
from: 2.0 * 4.0 * us_gallon_from,
|
||||||
|
to: MetricQuantity { amount: us_gallon_to, unit: Metric::Litre },
|
||||||
|
},
|
||||||
NonMetric::USLiquidQuart => Conversion {
|
NonMetric::USLiquidQuart => Conversion {
|
||||||
offset: 0.0,
|
offset: 0.0,
|
||||||
from: 4.0 * us_gallon_from,
|
from: 4.0 * us_gallon_from,
|
||||||
|
@ -208,6 +213,7 @@ mod test {
|
||||||
Test(NonMetric::ImperialPint, 0.56826125),
|
Test(NonMetric::ImperialPint, 0.56826125),
|
||||||
Test(NonMetric::ImperialQuart, 1.1365225),
|
Test(NonMetric::ImperialQuart, 1.1365225),
|
||||||
Test(NonMetric::ImperialGallon, 4.54609),
|
Test(NonMetric::ImperialGallon, 4.54609),
|
||||||
|
Test(NonMetric::USLiquidPint, 0.473176473),
|
||||||
Test(NonMetric::USLiquidQuart, 0.946352946),
|
Test(NonMetric::USLiquidQuart, 0.946352946),
|
||||||
Test(NonMetric::USGallon, 3.785411784),
|
Test(NonMetric::USGallon, 3.785411784),
|
||||||
];
|
];
|
||||||
|
|
|
@ -89,6 +89,7 @@ fn unit_to_name(unit: NonMetric) -> &'static str {
|
||||||
NonMetric::ImperialPint => "imperial pints",
|
NonMetric::ImperialPint => "imperial pints",
|
||||||
NonMetric::ImperialQuart => "imperial quarts",
|
NonMetric::ImperialQuart => "imperial quarts",
|
||||||
NonMetric::ImperialGallon => "imperial gallons",
|
NonMetric::ImperialGallon => "imperial gallons",
|
||||||
|
NonMetric::USLiquidPint => "US liquid pints",
|
||||||
NonMetric::USLiquidQuart => "US liquid quarts",
|
NonMetric::USLiquidQuart => "US liquid quarts",
|
||||||
NonMetric::USGallon => "US gallons",
|
NonMetric::USGallon => "US gallons",
|
||||||
}
|
}
|
||||||
|
@ -137,6 +138,7 @@ mod test {
|
||||||
assert_eq!(run("1 imp pt"), Ok("5.683 dl".to_string()));
|
assert_eq!(run("1 imp pt"), Ok("5.683 dl".to_string()));
|
||||||
assert_eq!(run("1 imp qt"), Ok("1.137 l".to_string()));
|
assert_eq!(run("1 imp qt"), Ok("1.137 l".to_string()));
|
||||||
assert_eq!(run("1 imp gal"), Ok("4.546 l".to_string()));
|
assert_eq!(run("1 imp gal"), Ok("4.546 l".to_string()));
|
||||||
|
assert_eq!(run("1 US pt"), Ok("4.732 dl".to_string()));
|
||||||
assert_eq!(run("1 US qt"), Ok("9.464 dl".to_string()));
|
assert_eq!(run("1 US qt"), Ok("9.464 dl".to_string()));
|
||||||
assert_eq!(run("1 US gal"), Ok("3.785 l".to_string()));
|
assert_eq!(run("1 US gal"), Ok("3.785 l".to_string()));
|
||||||
}
|
}
|
||||||
|
|
26
src/parse.rs
26
src/parse.rs
|
@ -205,6 +205,19 @@ fn parse_unit(input: String) -> Result<NonMetric, ParseError> {
|
||||||
"imperial gallons" => Ok(NonMetric::ImperialGallon),
|
"imperial gallons" => Ok(NonMetric::ImperialGallon),
|
||||||
"imp gal" => Ok(NonMetric::ImperialGallon),
|
"imp gal" => Ok(NonMetric::ImperialGallon),
|
||||||
|
|
||||||
|
"US liquid pint" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"US liquid pints" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"US pint" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"US pints" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"US pt" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"US p" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"us liquid pint" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"us liquid pints" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"us pint" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"us pints" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"us pt" => Ok(NonMetric::USLiquidPint),
|
||||||
|
"us p" => Ok(NonMetric::USLiquidPint),
|
||||||
|
|
||||||
"US liquid quart" => Ok(NonMetric::USLiquidQuart),
|
"US liquid quart" => Ok(NonMetric::USLiquidQuart),
|
||||||
"US liquid quarts" => Ok(NonMetric::USLiquidQuart),
|
"US liquid quarts" => Ok(NonMetric::USLiquidQuart),
|
||||||
"US quart" => Ok(NonMetric::USLiquidQuart),
|
"US quart" => Ok(NonMetric::USLiquidQuart),
|
||||||
|
@ -477,6 +490,19 @@ mod test {
|
||||||
assert_eq!(parse_unit("imperial gallons".to_string()), Ok(NonMetric::ImperialGallon));
|
assert_eq!(parse_unit("imperial gallons".to_string()), Ok(NonMetric::ImperialGallon));
|
||||||
assert_eq!(parse_unit("imp gal".to_string()), Ok(NonMetric::ImperialGallon));
|
assert_eq!(parse_unit("imp gal".to_string()), Ok(NonMetric::ImperialGallon));
|
||||||
|
|
||||||
|
assert_eq!(parse_unit("US liquid pint".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("US liquid pints".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("US pint".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("US pints".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("US pt".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("US p".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("us liquid pint".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("us liquid pints".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("us pint".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("us pints".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("us pt".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
assert_eq!(parse_unit("us p".to_string()), Ok(NonMetric::USLiquidPint));
|
||||||
|
|
||||||
assert_eq!(parse_unit("US liquid quart".to_string()), Ok(NonMetric::USLiquidQuart));
|
assert_eq!(parse_unit("US liquid quart".to_string()), Ok(NonMetric::USLiquidQuart));
|
||||||
assert_eq!(parse_unit("US liquid quarts".to_string()), Ok(NonMetric::USLiquidQuart));
|
assert_eq!(parse_unit("US liquid quarts".to_string()), Ok(NonMetric::USLiquidQuart));
|
||||||
assert_eq!(parse_unit("US quart".to_string()), Ok(NonMetric::USLiquidQuart));
|
assert_eq!(parse_unit("US quart".to_string()), Ok(NonMetric::USLiquidQuart));
|
||||||
|
|
|
@ -34,6 +34,7 @@ pub enum NonMetric {
|
||||||
ImperialPint,
|
ImperialPint,
|
||||||
ImperialQuart,
|
ImperialQuart,
|
||||||
ImperialGallon,
|
ImperialGallon,
|
||||||
|
USLiquidPint,
|
||||||
USLiquidQuart,
|
USLiquidQuart,
|
||||||
USGallon,
|
USGallon,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue