Compare commits
No commits in common. "79634cb9449372082754921adb14152ab61e378f" and "db674d1419f33c94577a328574e965408165a865" have entirely different histories.
79634cb944
...
db674d1419
5 changed files with 7 additions and 111 deletions
100
README.md
100
README.md
|
@ -1,100 +0,0 @@
|
|||
Metrify
|
||||
=======
|
||||
Metrify is a tool for converting commonly-used non-metric units to metric.
|
||||
|
||||
Usage
|
||||
-----
|
||||
Simplest way to use metrify is to invoke it with an expression in terms of
|
||||
non-metric units as its arguments:
|
||||
|
||||
metrify 1.4 short tons
|
||||
|
||||
The expression can contain several number + unit sequences, which are summed
|
||||
together if the units are compatible:
|
||||
|
||||
metrify 5′8″
|
||||
metrify 1 acre 15 square feet
|
||||
|
||||
You can also invoke metrify without arguments, in which case it will give you a
|
||||
prompt to type the expression into.
|
||||
|
||||
Result display
|
||||
--------------
|
||||
Metrify will pick the appropriate prefix for the given result and unit
|
||||
automatically. The value is rounded so that results <1 have 4 digits, <10 3
|
||||
digits, <100 2 digits, <1000 1 digit and ≥1000 no digits after the decimal
|
||||
point. The digits before the decimal point are grouped into groups of three.
|
||||
|
||||
0.4929 ml
|
||||
1.609 km
|
||||
28.35 g
|
||||
907.2 kg
|
||||
28 317 cm³
|
||||
|
||||
Supported units
|
||||
---------------
|
||||
|
||||
### Length units based on the international yard
|
||||
|
||||
* inch (in)
|
||||
* foot (ft)
|
||||
* yard (yd)
|
||||
* mile (mi)
|
||||
|
||||
### Mass units based on the international pound
|
||||
|
||||
* ounce (oz)
|
||||
* pound (lb)
|
||||
* stone (st)
|
||||
* short ton
|
||||
* long ton
|
||||
|
||||
### Temperature
|
||||
|
||||
* Degrees Fahrenheit (°F)
|
||||
|
||||
### Area units based on the international yard
|
||||
|
||||
* square inch (in²)
|
||||
* square foot (ft²)
|
||||
* acre (ac)
|
||||
* square mile (mi²)
|
||||
|
||||
### Volume units based on the international yard
|
||||
|
||||
* cubic inch (in³)
|
||||
* cubic foot (ft³)
|
||||
|
||||
### Imperial fluid volume units
|
||||
|
||||
* imperial fluid ounce (imp fl oz)
|
||||
* imperial pint (imp pt)
|
||||
* imperial quart (imp qt)
|
||||
* imperial gallon (imp gal)
|
||||
|
||||
### US customary fluid volume units
|
||||
|
||||
* US teaspoon (tsp)
|
||||
* US tablespoon (tbsp)
|
||||
* US fluid ounce (us fl oz)
|
||||
* US cup (cup)
|
||||
* US pint (us pt)
|
||||
* US quart (us qt)
|
||||
* US gallon (us gal)
|
||||
|
||||
Why should I use metrify instead of units(1)?
|
||||
---------------------------------------------
|
||||
Metrify is more special-purpose than units(1), which allows it to present the
|
||||
user a nicer interface for the purposes it does support. For example with
|
||||
metrify you do not need to explicitly tell it the unit you are converting to,
|
||||
because due to its requirements (conversion is always from non-metric to metric)
|
||||
it can automatically pick the correct one.
|
||||
|
||||
Building and installation
|
||||
-------------------------
|
||||
You can build and test out metrify with `cargo run`. If you want to install it
|
||||
locally, you can use `cargo install --path .` in the source directory.
|
||||
|
||||
License
|
||||
-------
|
||||
Metrify is under Creative Commons Zero 1.0.
|
|
@ -48,7 +48,7 @@ fn get_conversion(unit: NonMetric) -> Conversion {
|
|||
from: inch_from,
|
||||
to: MetricQuantity { amount: 1760.0 * 3.0 * 12.0 * inch_to, unit: Metric::Metre },
|
||||
},
|
||||
// Mass
|
||||
// Weight
|
||||
NonMetric::Ounce => Conversion {
|
||||
offset: 0.0,
|
||||
from: 16.0 * pound_from,
|
||||
|
@ -189,7 +189,7 @@ mod test {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn mass() {
|
||||
fn weight() {
|
||||
let tests = [
|
||||
Test(NonMetric::Ounce, 28.349523125),
|
||||
Test(NonMetric::Pound, 453.59237),
|
||||
|
|
|
@ -73,7 +73,7 @@ fn unit_to_name(unit: NonMetric) -> &'static str {
|
|||
NonMetric::Foot => "feet",
|
||||
NonMetric::Yard => "yards",
|
||||
NonMetric::Mile => "miles",
|
||||
// Mass
|
||||
// Weight
|
||||
NonMetric::Ounce => "ounces",
|
||||
NonMetric::Pound => "pounds",
|
||||
NonMetric::Stone => "stones",
|
||||
|
@ -127,7 +127,7 @@ mod test {
|
|||
assert_eq!(run("1 ft"), Ok("30.48 cm".to_string()));
|
||||
assert_eq!(run("1 yard"), Ok("91.44 cm".to_string()));
|
||||
assert_eq!(run("1 mile"), Ok("1.609 km".to_string()));
|
||||
// Mass
|
||||
// Weight
|
||||
assert_eq!(run("1 oz"), Ok("28.35 g".to_string()));
|
||||
assert_eq!(run("1 lb"), Ok("453.6 g".to_string()));
|
||||
assert_eq!(run("1 st"), Ok("6.35 kg".to_string()));
|
||||
|
|
|
@ -83,7 +83,7 @@ fn parse_unit(input: String) -> Result<NonMetric, ParseError> {
|
|||
"mi" => Ok(NonMetric::Mile),
|
||||
"m" => Ok(NonMetric::Mile),
|
||||
|
||||
// Mass
|
||||
// Weight
|
||||
"ounce" => Ok(NonMetric::Ounce),
|
||||
"ounces" => Ok(NonMetric::Ounce),
|
||||
"oz" => Ok(NonMetric::Ounce),
|
||||
|
@ -263,8 +263,6 @@ fn parse_unit(input: String) -> Result<NonMetric, ParseError> {
|
|||
"US cups" => Ok(NonMetric::USCup),
|
||||
"us cup" => Ok(NonMetric::USCup),
|
||||
"us cups" => Ok(NonMetric::USCup),
|
||||
"cup" => Ok(NonMetric::USCup),
|
||||
"cups" => Ok(NonMetric::USCup),
|
||||
|
||||
"US liquid pint" => Ok(NonMetric::USLiquidPint),
|
||||
"US liquid pints" => Ok(NonMetric::USLiquidPint),
|
||||
|
@ -461,7 +459,7 @@ mod test {
|
|||
"m",
|
||||
]);
|
||||
|
||||
// Mass
|
||||
// Weight
|
||||
test_units(NonMetric::Ounce, &[
|
||||
"ounce",
|
||||
"ounces",
|
||||
|
@ -680,8 +678,6 @@ mod test {
|
|||
"US cups",
|
||||
"us cup",
|
||||
"us cups",
|
||||
"cup",
|
||||
"cups",
|
||||
]);
|
||||
|
||||
test_units(NonMetric::USLiquidPint, &[
|
||||
|
|
|
@ -15,7 +15,7 @@ pub enum NonMetric {
|
|||
Foot,
|
||||
Yard,
|
||||
Mile,
|
||||
// Mass
|
||||
// Weight
|
||||
Ounce,
|
||||
Pound,
|
||||
Stone,
|
||||
|
|
Loading…
Reference in a new issue