Added unit of power
This commit is contained in:
parent
0758611dfb
commit
539568c5b5
16
src/lexer.rs
16
src/lexer.rs
@ -227,6 +227,16 @@ pub fn lex(input: &str) -> Result<TokenVector, String> {
|
|||||||
"twh" | "terawatt hour" | "terawatt hours" => tokens.push(Token::Unit(TerawattHour)),
|
"twh" | "terawatt hour" | "terawatt hours" => tokens.push(Token::Unit(TerawattHour)),
|
||||||
"pwh" | "petawatt hour" | "petawatt hours" => tokens.push(Token::Unit(PetawattHour)),
|
"pwh" | "petawatt hour" | "petawatt hours" => tokens.push(Token::Unit(PetawattHour)),
|
||||||
|
|
||||||
|
"milliwatt" | "milliwatts" => tokens.push(Token::Unit(Milliwatt)),
|
||||||
|
"w" | "watt" | "watts" => tokens.push(Token::Unit(Watt)),
|
||||||
|
"kw" | "kilowatt" | "kilowatts" => tokens.push(Token::Unit(Kilowatt)),
|
||||||
|
"mw" | "megawatt" | "megawatts" => tokens.push(Token::Unit(Megawatt)),
|
||||||
|
"gw" | "gigawatt" | "gigawatts" => tokens.push(Token::Unit(Gigawatt)),
|
||||||
|
"tw" | "terawatt" | "terawatts" => tokens.push(Token::Unit(Terawatt)),
|
||||||
|
"pw" | "petawatt" | "petawatts" => tokens.push(Token::Unit(Petawatt)),
|
||||||
|
"hp" | "hps" | "horsepower" | "horsepowers" => tokens.push(Token::Unit(Horsepower)),
|
||||||
|
"mhp" | "hpm" | "metric hp" | "metric hps" | "metric horsepower" | "metric horsepowers" => tokens.push(Token::Unit(MetricHorsepower)),
|
||||||
|
|
||||||
"kph" | "kmh" => tokens.push(Token::Unit(KilometersPerHour)),
|
"kph" | "kmh" => tokens.push(Token::Unit(KilometersPerHour)),
|
||||||
"mps" => tokens.push(Token::Unit(MetersPerSecond)),
|
"mps" => tokens.push(Token::Unit(MetersPerSecond)),
|
||||||
"mph" => tokens.push(Token::Unit(MilesPerHour)),
|
"mph" => tokens.push(Token::Unit(MilesPerHour)),
|
||||||
@ -348,6 +358,12 @@ pub fn lex(input: &str) -> Result<TokenVector, String> {
|
|||||||
(Token::Unit(Foot), Token::Per, Token::Unit(Second)) => {
|
(Token::Unit(Foot), Token::Per, Token::Unit(Second)) => {
|
||||||
tokens[token_index-2] = Token::Unit(FeetPerSecond);
|
tokens[token_index-2] = Token::Unit(FeetPerSecond);
|
||||||
},
|
},
|
||||||
|
(Token::Unit(BritishThermalUnit), Token::Per, Token::Unit(Minute)) => {
|
||||||
|
tokens[token_index-2] = Token::Unit(BritishThermalUnitsPerMinute);
|
||||||
|
},
|
||||||
|
(Token::Unit(BritishThermalUnit), Token::Per, Token::Unit(Hour)) => {
|
||||||
|
tokens[token_index-2] = Token::Unit(BritishThermalUnitsPerHour);
|
||||||
|
},
|
||||||
_ => {
|
_ => {
|
||||||
replaced = false;
|
replaced = false;
|
||||||
},
|
},
|
||||||
|
|||||||
23
src/units.rs
23
src/units.rs
@ -10,6 +10,7 @@ pub enum UnitType {
|
|||||||
Mass,
|
Mass,
|
||||||
Information,
|
Information,
|
||||||
Energy,
|
Energy,
|
||||||
|
Power,
|
||||||
Speed,
|
Speed,
|
||||||
Temperature,
|
Temperature,
|
||||||
}
|
}
|
||||||
@ -170,6 +171,18 @@ create_units!(
|
|||||||
TerawattHour: (Energy, d128!(3600000000000000)),
|
TerawattHour: (Energy, d128!(3600000000000000)),
|
||||||
PetawattHour: (Energy, d128!(3600000000000000000)),
|
PetawattHour: (Energy, d128!(3600000000000000000)),
|
||||||
|
|
||||||
|
Milliwatt: (Power, d128!(0.001)),
|
||||||
|
Watt: (Power, d128!(1)),
|
||||||
|
Kilowatt: (Power, d128!(1000)),
|
||||||
|
Megawatt: (Power, d128!(1000000)),
|
||||||
|
Gigawatt: (Power, d128!(1000000000)),
|
||||||
|
Terawatt: (Power, d128!(1000000000000)),
|
||||||
|
Petawatt: (Power, d128!(1000000000000000)),
|
||||||
|
BritishThermalUnitsPerMinute: (Power, d128!(0.0568690272188)), // probably inexact
|
||||||
|
BritishThermalUnitsPerHour: (Power, d128!(3.412141633128)), // probably inexact
|
||||||
|
Horsepower: (Power, d128!(745.69987158227022)), // exact according to wikipedia
|
||||||
|
MetricHorsepower: (Power, d128!(735.49875)),
|
||||||
|
|
||||||
KilometersPerHour: (Speed, d128!(1)),
|
KilometersPerHour: (Speed, d128!(1)),
|
||||||
MetersPerSecond: (Speed, d128!(3.6)),
|
MetersPerSecond: (Speed, d128!(3.6)),
|
||||||
MilesPerHour: (Speed, d128!(1.609344)),
|
MilesPerHour: (Speed, d128!(1.609344)),
|
||||||
@ -361,6 +374,16 @@ mod tests {
|
|||||||
assert_eq!(convert_test(1000.0, GigawattHour, TerawattHour), 1.0);
|
assert_eq!(convert_test(1000.0, GigawattHour, TerawattHour), 1.0);
|
||||||
assert_eq!(convert_test(1000.0, TerawattHour, PetawattHour), 1.0);
|
assert_eq!(convert_test(1000.0, TerawattHour, PetawattHour), 1.0);
|
||||||
|
|
||||||
|
assert_eq!(convert_test(1000.0, Watt, Kilowatt), 1.0);
|
||||||
|
assert_eq!(convert_test(1000.0, Kilowatt, Megawatt), 1.0);
|
||||||
|
assert_eq!(convert_test(1000.0, Megawatt, Gigawatt), 1.0);
|
||||||
|
assert_eq!(convert_test(1000.0, Gigawatt, Terawatt), 1.0);
|
||||||
|
assert_eq!(convert_test(1000.0, Terawatt, Petawatt), 1.0);
|
||||||
|
assert_eq!(convert_test(0.0568690272188, Watt, BritishThermalUnitsPerMinute), 1.0);
|
||||||
|
assert_eq!(convert_test(60.0, BritishThermalUnitsPerMinute, BritishThermalUnitsPerHour), 1.0);
|
||||||
|
assert_eq!(convert_test(745.6998715822702, Watt, Horsepower), 1.0);
|
||||||
|
assert_eq!(convert_test(735.49875, Watt, MetricHorsepower), 1.0);
|
||||||
|
|
||||||
assert_eq!(convert_test(3.6, KilometersPerHour, MetersPerSecond), 1.0);
|
assert_eq!(convert_test(3.6, KilometersPerHour, MetersPerSecond), 1.0);
|
||||||
assert_eq!(convert_test(0.3048, MetersPerSecond, FeetPerSecond), 1.0);
|
assert_eq!(convert_test(0.3048, MetersPerSecond, FeetPerSecond), 1.0);
|
||||||
assert_eq!(convert_test(1.609344, KilometersPerHour, MilesPerHour), 1.0);
|
assert_eq!(convert_test(1.609344, KilometersPerHour, MilesPerHour), 1.0);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user