Add support for square yards
This commit is contained in:
parent
b8d9ba177c
commit
8e4680a3bc
|
@ -57,6 +57,7 @@ Supported units
|
||||||
|
|
||||||
* square inch (in²)
|
* square inch (in²)
|
||||||
* square foot (ft²)
|
* square foot (ft²)
|
||||||
|
* square yard (yd²)
|
||||||
* acre (ac)
|
* acre (ac)
|
||||||
* square mile (mi²)
|
* square mile (mi²)
|
||||||
|
|
||||||
|
|
|
@ -91,6 +91,11 @@ fn get_conversion(unit: NonMetric) -> Conversion {
|
||||||
from: inch_from * inch_from,
|
from: inch_from * inch_from,
|
||||||
to: MetricQuantity { amount: 12.0 * inch_to * 12.0 * inch_to, unit: Metric::SquareMetre },
|
to: MetricQuantity { amount: 12.0 * inch_to * 12.0 * inch_to, unit: Metric::SquareMetre },
|
||||||
},
|
},
|
||||||
|
NonMetric::SquareYard => Conversion {
|
||||||
|
offset: 0.0,
|
||||||
|
from: inch_from * inch_from,
|
||||||
|
to: MetricQuantity { amount: 3.0 * 12.0 * inch_to * 3.0 * 12.0 * inch_to, unit: Metric::SquareMetre },
|
||||||
|
},
|
||||||
NonMetric::Acre => Conversion {
|
NonMetric::Acre => Conversion {
|
||||||
offset: 0.0,
|
offset: 0.0,
|
||||||
from: inch_from * inch_from,
|
from: inch_from * inch_from,
|
||||||
|
@ -223,6 +228,7 @@ mod test {
|
||||||
let tests = [
|
let tests = [
|
||||||
Test(NonMetric::SquareInch, 0.00064516),
|
Test(NonMetric::SquareInch, 0.00064516),
|
||||||
Test(NonMetric::SquareFoot, 0.09290304),
|
Test(NonMetric::SquareFoot, 0.09290304),
|
||||||
|
Test(NonMetric::SquareYard, 0.83612736),
|
||||||
Test(NonMetric::Acre, 4046.8564224),
|
Test(NonMetric::Acre, 4046.8564224),
|
||||||
Test(NonMetric::SquareMile, 2589988.110336),
|
Test(NonMetric::SquareMile, 2589988.110336),
|
||||||
];
|
];
|
||||||
|
|
|
@ -84,6 +84,7 @@ fn unit_to_name(unit: NonMetric) -> &'static str {
|
||||||
// Area
|
// Area
|
||||||
NonMetric::SquareInch => "square inches",
|
NonMetric::SquareInch => "square inches",
|
||||||
NonMetric::SquareFoot => "square feet",
|
NonMetric::SquareFoot => "square feet",
|
||||||
|
NonMetric::SquareYard => "square yards",
|
||||||
NonMetric::Acre => "acres",
|
NonMetric::Acre => "acres",
|
||||||
NonMetric::SquareMile => "square miles",
|
NonMetric::SquareMile => "square miles",
|
||||||
// Volume
|
// Volume
|
||||||
|
@ -140,6 +141,7 @@ mod test {
|
||||||
// Area
|
// Area
|
||||||
assert_eq!(run("1 in²"), Ok("6.452 cm²".to_string()));
|
assert_eq!(run("1 in²"), Ok("6.452 cm²".to_string()));
|
||||||
assert_eq!(run("1 ft²"), Ok("929 cm²".to_string()));
|
assert_eq!(run("1 ft²"), Ok("929 cm²".to_string()));
|
||||||
|
assert_eq!(run("1 yd²"), Ok("8 361 cm²".to_string()));
|
||||||
assert_eq!(run("1 acre"), Ok("4 047 m²".to_string()));
|
assert_eq!(run("1 acre"), Ok("4 047 m²".to_string()));
|
||||||
assert_eq!(run("1 mi²"), Ok("2.59 km²".to_string()));
|
assert_eq!(run("1 mi²"), Ok("2.59 km²".to_string()));
|
||||||
// Volume
|
// Volume
|
||||||
|
|
28
src/parse.rs
28
src/parse.rs
|
@ -156,6 +156,19 @@ fn parse_unit(input: String) -> Result<NonMetric, ParseError> {
|
||||||
"'^2" => Ok(NonMetric::SquareFoot),
|
"'^2" => Ok(NonMetric::SquareFoot),
|
||||||
"sf" => Ok(NonMetric::SquareFoot),
|
"sf" => Ok(NonMetric::SquareFoot),
|
||||||
|
|
||||||
|
"square yard" => Ok(NonMetric::SquareYard),
|
||||||
|
"square yards" => Ok(NonMetric::SquareYard),
|
||||||
|
"square yd" => Ok(NonMetric::SquareYard),
|
||||||
|
"sq yard" => Ok(NonMetric::SquareYard),
|
||||||
|
"sq yards" => Ok(NonMetric::SquareYard),
|
||||||
|
"sq yd" => Ok(NonMetric::SquareYard),
|
||||||
|
"yard²" => Ok(NonMetric::SquareYard),
|
||||||
|
"yards²" => Ok(NonMetric::SquareYard),
|
||||||
|
"yd²" => Ok(NonMetric::SquareYard),
|
||||||
|
"yard^2" => Ok(NonMetric::SquareYard),
|
||||||
|
"yards^2" => Ok(NonMetric::SquareYard),
|
||||||
|
"yd^2" => Ok(NonMetric::SquareYard),
|
||||||
|
|
||||||
"acre" => Ok(NonMetric::Acre),
|
"acre" => Ok(NonMetric::Acre),
|
||||||
"acres" => Ok(NonMetric::Acre),
|
"acres" => Ok(NonMetric::Acre),
|
||||||
"ac" => Ok(NonMetric::Acre),
|
"ac" => Ok(NonMetric::Acre),
|
||||||
|
@ -550,6 +563,21 @@ mod test {
|
||||||
"sf",
|
"sf",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
test_units(NonMetric::SquareYard, &[
|
||||||
|
"square yard",
|
||||||
|
"square yards",
|
||||||
|
"square yd",
|
||||||
|
"sq yard",
|
||||||
|
"sq yards",
|
||||||
|
"sq yd",
|
||||||
|
"yard²",
|
||||||
|
"yards²",
|
||||||
|
"yd²",
|
||||||
|
"yard^2",
|
||||||
|
"yards^2",
|
||||||
|
"yd^2",
|
||||||
|
]);
|
||||||
|
|
||||||
test_units(NonMetric::Acre, &[
|
test_units(NonMetric::Acre, &[
|
||||||
"acre",
|
"acre",
|
||||||
"acres",
|
"acres",
|
||||||
|
|
|
@ -26,6 +26,7 @@ pub enum NonMetric {
|
||||||
// Area
|
// Area
|
||||||
SquareInch,
|
SquareInch,
|
||||||
SquareFoot,
|
SquareFoot,
|
||||||
|
SquareYard,
|
||||||
Acre,
|
Acre,
|
||||||
SquareMile,
|
SquareMile,
|
||||||
// Volume
|
// Volume
|
||||||
|
|
Loading…
Reference in New Issue