Add non-US spellings of various "metre"-like words
Also fix a bug where decimeter units were being parsed into centimetres.
This commit is contained in:
parent
dc1b011058
commit
2805185317
61
src/lexer.rs
61
src/lexer.rs
@ -111,20 +111,20 @@ pub fn lex(input: &str, allow_trailing_operators: bool, default_degree: Unit) ->
|
|||||||
if is_multidimensional {
|
if is_multidimensional {
|
||||||
let string_plus_one_character = &input[start_index..=end_index+1];
|
let string_plus_one_character = &input[start_index..=end_index+1];
|
||||||
match string_plus_one_character {
|
match string_plus_one_character {
|
||||||
"mm2" | "millimeter2" | "millimeters2" => tokens.push(Token::Unit(SquareMillimeter)),
|
"mm2" | "millimeter2" | "millimeters2" | "millimetre2" | "millimetres2" => tokens.push(Token::Unit(SquareMillimeter)),
|
||||||
"cm2" | "centimeter2" | "centimeters2" => tokens.push(Token::Unit(SquareCentimeter)),
|
"cm2" | "centimeter2" | "centimeters2" | "centimetre2" | "centimetres2" => tokens.push(Token::Unit(SquareCentimeter)),
|
||||||
"dm2" | "decimeter2" | "decimeters2" => tokens.push(Token::Unit(SquareCentimeter)),
|
"dm2" | "decimeter2" | "decimeters2" | "decimetre2" | "decimetres2" => tokens.push(Token::Unit(SquareDecimeter)),
|
||||||
"m2" | "meter2" | "meters2" => tokens.push(Token::Unit(SquareMeter)),
|
"m2" | "meter2" | "meters2" | "metre2" | "metres2" => tokens.push(Token::Unit(SquareMeter)),
|
||||||
"km2" | "kilometer2" | "kilometers2" => tokens.push(Token::Unit(SquareKilometer)),
|
"km2" | "kilometer2" | "kilometers2" | "kilometre2" | "kilometres2" => tokens.push(Token::Unit(SquareKilometer)),
|
||||||
"in2" | "inch2" | "inches2" => tokens.push(Token::Unit(SquareInch)),
|
"in2" | "inch2" | "inches2" => tokens.push(Token::Unit(SquareInch)),
|
||||||
"ft2" | "foot2" | "feet2" => tokens.push(Token::Unit(SquareFoot)),
|
"ft2" | "foot2" | "feet2" => tokens.push(Token::Unit(SquareFoot)),
|
||||||
"yd2" | "yard2" | "yards2" => tokens.push(Token::Unit(SquareYard)),
|
"yd2" | "yard2" | "yards2" => tokens.push(Token::Unit(SquareYard)),
|
||||||
"mi2" | "mile2" | "miles2" => tokens.push(Token::Unit(SquareMile)),
|
"mi2" | "mile2" | "miles2" => tokens.push(Token::Unit(SquareMile)),
|
||||||
"mm3" | "millimeter3" | "millimeters3" => tokens.push(Token::Unit(CubicMillimeter)),
|
"mm3" | "millimeter3" | "millimeters3" | "millimetre3" | "millimetres3" => tokens.push(Token::Unit(CubicMillimeter)),
|
||||||
"cm3" | "centimeter3" | "centimeters3" => tokens.push(Token::Unit(CubicCentimeter)),
|
"cm3" | "centimeter3" | "centimeters3" | "centimetre3" | "centimetres3" => tokens.push(Token::Unit(CubicCentimeter)),
|
||||||
"dm3" | "decimeter3" | "decimeters3" => tokens.push(Token::Unit(CubicCentimeter)),
|
"dm3" | "decimeter3" | "decimeters3" | "decimetre3" | "decimetres3" => tokens.push(Token::Unit(CubicDecimeter)),
|
||||||
"m3" | "meter3" | "meters3" => tokens.push(Token::Unit(CubicMeter)),
|
"m3" | "meter3" | "meters3" | "metre3" | "metres3" => tokens.push(Token::Unit(CubicMeter)),
|
||||||
"km3" | "kilometer3" | "kilometers3" => tokens.push(Token::Unit(CubicKilometer)),
|
"km3" | "kilometer3" | "kilometers3" | "kilometre3" | "kilometres3" => tokens.push(Token::Unit(CubicKilometer)),
|
||||||
"inc3" | "inch3" | "inches3" => tokens.push(Token::Unit(CubicInch)),
|
"inc3" | "inch3" | "inches3" => tokens.push(Token::Unit(CubicInch)),
|
||||||
"ft3" | "foot3" | "feet3" => tokens.push(Token::Unit(CubicFoot)),
|
"ft3" | "foot3" | "feet3" => tokens.push(Token::Unit(CubicFoot)),
|
||||||
"yd3" | "yard3" | "yards3" => tokens.push(Token::Unit(CubicYard)),
|
"yd3" | "yard3" | "yards3" => tokens.push(Token::Unit(CubicYard)),
|
||||||
@ -135,7 +135,6 @@ pub fn lex(input: &str, allow_trailing_operators: bool, default_degree: Unit) ->
|
|||||||
let string = &input[start_index..=end_index];
|
let string = &input[start_index..=end_index];
|
||||||
let string: &str = &string.replacen("square", "sq", 1);
|
let string: &str = &string.replacen("square", "sq", 1);
|
||||||
match string {
|
match string {
|
||||||
|
|
||||||
// MAKE SURE max_word_length IS EQUAL TO THE
|
// MAKE SURE max_word_length IS EQUAL TO THE
|
||||||
// LENGTH OF THE LONGEST STRING IN THIS MATCH STATEMENT.
|
// LENGTH OF THE LONGEST STRING IN THIS MATCH STATEMENT.
|
||||||
|
|
||||||
@ -207,11 +206,11 @@ pub fn lex(input: &str, allow_trailing_operators: bool, default_degree: Unit) ->
|
|||||||
"century" | "centuries" => tokens.push(Token::Unit(Century)),
|
"century" | "centuries" => tokens.push(Token::Unit(Century)),
|
||||||
"millenium" | "millenia" | "milleniums" => tokens.push(Token::Unit(Millenium)),
|
"millenium" | "millenia" | "milleniums" => tokens.push(Token::Unit(Millenium)),
|
||||||
|
|
||||||
"mm" | "millimeter" | "millimeters" => tokens.push(Token::Unit(Millimeter)),
|
"mm" | "millimeter" | "millimeters" | "millimetre" | "millimetres" => tokens.push(Token::Unit(Millimeter)),
|
||||||
"cm" | "centimeter" | "centimeters" => tokens.push(Token::Unit(Centimeter)),
|
"cm" | "centimeter" | "centimeters" | "centimetre" | "centimetres" => tokens.push(Token::Unit(Centimeter)),
|
||||||
"dm" | "decimeter" | "decimeters" => tokens.push(Token::Unit(Centimeter)),
|
"dm" | "decimeter" | "decimeters" | "decimetre" | "decimetres" => tokens.push(Token::Unit(Decimeter)),
|
||||||
"m" | "meter" | "meters" => tokens.push(Token::Unit(Meter)),
|
"m" | "meter" | "meters" | "metre" | "metres" => tokens.push(Token::Unit(Meter)),
|
||||||
"km" | "kilometer" | "kilometers" => tokens.push(Token::Unit(Kilometer)),
|
"km" | "kilometer" | "kilometers" | "kilometre" | "kilometres" => tokens.push(Token::Unit(Kilometer)),
|
||||||
"in" => tokens.push(Token::LexerKeyword(In)),
|
"in" => tokens.push(Token::LexerKeyword(In)),
|
||||||
"inch" | "inches" => tokens.push(Token::Unit(Inch)),
|
"inch" | "inches" => tokens.push(Token::Unit(Inch)),
|
||||||
"ft" | "foot" | "feet" => tokens.push(Token::Unit(Foot)),
|
"ft" | "foot" | "feet" => tokens.push(Token::Unit(Foot)),
|
||||||
@ -221,11 +220,11 @@ pub fn lex(input: &str, allow_trailing_operators: bool, default_degree: Unit) ->
|
|||||||
"ly" | "lightyear" | "lightyears" | "light yr" | "light yrs" | "light year" | "light years" => tokens.push(Token::Unit(LightYear)),
|
"ly" | "lightyear" | "lightyears" | "light yr" | "light yrs" | "light year" | "light years" => tokens.push(Token::Unit(LightYear)),
|
||||||
"lightsec" | "lightsecs" | "lightsecond" | "lightseconds" | "light sec" | "light secs" | "light second" | "light seconds" => tokens.push(Token::Unit(LightYear)),
|
"lightsec" | "lightsecs" | "lightsecond" | "lightseconds" | "light sec" | "light secs" | "light second" | "light seconds" => tokens.push(Token::Unit(LightYear)),
|
||||||
|
|
||||||
"sqmm" | "sq mm" | "sq millimeter" | "sq millimeters" => tokens.push(Token::Unit(SquareMillimeter)),
|
"sqmm" | "sq mm" | "sq millimeter" | "sq millimeters" | "sq millimetre" | "sq millimetres" => tokens.push(Token::Unit(SquareMillimeter)),
|
||||||
"sqcm" | "sq cm" | "sq centimeter" | "sq centimeters" => tokens.push(Token::Unit(SquareCentimeter)),
|
"sqcm" | "sq cm" | "sq centimeter" | "sq centimeters" | "sq centimetre" | "sq centimetres" => tokens.push(Token::Unit(SquareCentimeter)),
|
||||||
"sqdm" | "sq dm" | "sq decimeter" | "sq decimeters" => tokens.push(Token::Unit(SquareDecimeter)),
|
"sqdm" | "sq dm" | "sq decimeter" | "sq decimeters" | "sq decimetre" | "sq decimetres" => tokens.push(Token::Unit(SquareDecimeter)),
|
||||||
"sqm" | "sq m" | "sq meter" | "sq meters" => tokens.push(Token::Unit(SquareMeter)),
|
"sqm" | "sq m" | "sq meter" | "sq meters" | "sq metre" | "sq metres" => tokens.push(Token::Unit(SquareMeter)),
|
||||||
"sqkm" | "sq km" | "sq kilometer" | "sq kilometers" => tokens.push(Token::Unit(SquareKilometer)),
|
"sqkm" | "sq km" | "sq kilometer" | "sq kilometers" | "sq kilometre" | "sq kilometres" => tokens.push(Token::Unit(SquareKilometer)),
|
||||||
"sqin" | "sq in" | "sq inch" | "sq inches" => tokens.push(Token::Unit(SquareInch)),
|
"sqin" | "sq in" | "sq inch" | "sq inches" => tokens.push(Token::Unit(SquareInch)),
|
||||||
"sqft" | "sq ft" | "sq foot" | "sq feet" => tokens.push(Token::Unit(SquareFoot)),
|
"sqft" | "sq ft" | "sq foot" | "sq feet" => tokens.push(Token::Unit(SquareFoot)),
|
||||||
"sqyd" | "sq yd" | "sq yard" | "sq yards" => tokens.push(Token::Unit(SquareYard)),
|
"sqyd" | "sq yd" | "sq yard" | "sq yards" => tokens.push(Token::Unit(SquareYard)),
|
||||||
@ -235,19 +234,19 @@ pub fn lex(input: &str, allow_trailing_operators: bool, default_degree: Unit) ->
|
|||||||
"ha" | "hectare" | "hectares" => tokens.push(Token::Unit(Hectare)),
|
"ha" | "hectare" | "hectares" => tokens.push(Token::Unit(Hectare)),
|
||||||
"acre" | "acres" => tokens.push(Token::Unit(Acre)),
|
"acre" | "acres" => tokens.push(Token::Unit(Acre)),
|
||||||
|
|
||||||
"cubic millimeter" | "cubic millimeters" => tokens.push(Token::Unit(CubicMillimeter)),
|
"cubic millimeter" | "cubic millimeters" | "cubic millimetre" | "cubic millimetres" => tokens.push(Token::Unit(CubicMillimeter)),
|
||||||
"cubic centimeter" | "cubic centimeters" => tokens.push(Token::Unit(CubicCentimeter)),
|
"cubic centimeter" | "cubic centimeters" | "cubic centimetre" | "cubic centimetres" => tokens.push(Token::Unit(CubicCentimeter)),
|
||||||
"cubic decimeter" | "cubic decimeters" => tokens.push(Token::Unit(CubicDecimeter)),
|
"cubic decimeter" | "cubic decimeters" | "cubic decimetre" | "cubic decimetres" => tokens.push(Token::Unit(CubicDecimeter)),
|
||||||
"cubic meter" | "cubic meters" => tokens.push(Token::Unit(CubicMeter)),
|
"cubic meter" | "cubic meters" | "cubic metre" | "cubic metres" => tokens.push(Token::Unit(CubicMeter)),
|
||||||
"cubic kilometer" | "cubic kilometers" => tokens.push(Token::Unit(CubicKilometer)),
|
"cubic kilometer" | "cubic kilometers" | "cubic kilometre" | "cubic kilometres" => tokens.push(Token::Unit(CubicKilometer)),
|
||||||
"cubic inch" | "cubic inches" => tokens.push(Token::Unit(CubicInch)),
|
"cubic inch" | "cubic inches" => tokens.push(Token::Unit(CubicInch)),
|
||||||
"cubic foot" | "cubic feet" => tokens.push(Token::Unit(CubicFoot)),
|
"cubic foot" | "cubic feet" => tokens.push(Token::Unit(CubicFoot)),
|
||||||
"cubic yard" | "cubic yards" => tokens.push(Token::Unit(CubicYard)),
|
"cubic yard" | "cubic yards" => tokens.push(Token::Unit(CubicYard)),
|
||||||
"cubic mile" | "cubic miles" => tokens.push(Token::Unit(CubicMile)),
|
"cubic mile" | "cubic miles" => tokens.push(Token::Unit(CubicMile)),
|
||||||
"ml" | "milliliter" | "milliliters" => tokens.push(Token::Unit(Milliliter)),
|
"ml" | "milliliter" | "milliliters" | "millilitre" | "millilitres" => tokens.push(Token::Unit(Milliliter)),
|
||||||
"cl" | "centiliter" | "centiliters" => tokens.push(Token::Unit(Centiliter)),
|
"cl" | "centiliter" | "centiliters" | "centilitre" | "centilitres" => tokens.push(Token::Unit(Centiliter)),
|
||||||
"dl" | "deciliter" | "deciliters" => tokens.push(Token::Unit(Deciliter)),
|
"dl" | "deciliter" | "deciliters" | "decilitre" | "decilitres" => tokens.push(Token::Unit(Deciliter)),
|
||||||
"l" | "liter" | "liters" => tokens.push(Token::Unit(Liter)),
|
"l" | "liter" | "liters" | "litre" | "litres" => tokens.push(Token::Unit(Liter)),
|
||||||
"ts" | "tsp" | "tspn" | "tspns" | "teaspoon" | "teaspoons" => tokens.push(Token::Unit(Teaspoon)),
|
"ts" | "tsp" | "tspn" | "tspns" | "teaspoon" | "teaspoons" => tokens.push(Token::Unit(Teaspoon)),
|
||||||
"tbs" | "tbsp" | "tablespoon" | "tablespoons" => tokens.push(Token::Unit(Tablespoon)),
|
"tbs" | "tbsp" | "tablespoon" | "tablespoons" => tokens.push(Token::Unit(Tablespoon)),
|
||||||
"floz" | "fl oz" | "fl ounce" | "fl ounces" | "fluid oz" | "fluid ounce" | "fluid ounces" => tokens.push(Token::Unit(FluidOunce)),
|
"floz" | "fl oz" | "fl ounce" | "fl ounces" | "fluid oz" | "fluid ounce" | "fluid ounces" => tokens.push(Token::Unit(FluidOunce)),
|
||||||
@ -320,7 +319,7 @@ pub fn lex(input: &str, allow_trailing_operators: bool, default_degree: Unit) ->
|
|||||||
|
|
||||||
"millijoule" | "millijoules" => tokens.push(Token::Unit(Millijoule)),
|
"millijoule" | "millijoules" => tokens.push(Token::Unit(Millijoule)),
|
||||||
"j"| "joule" | "joules" => tokens.push(Token::Unit(Joule)),
|
"j"| "joule" | "joules" => tokens.push(Token::Unit(Joule)),
|
||||||
"nm" | "newton meter" | "newton meters" | "newton-meter" | "newton-meters" => tokens.push(Token::Unit(NewtonMeter)),
|
"nm" | "newton meter" | "newton meters" | "newton-meter" | "newton-meters" | "newton metre" | "newton metres" | "newton-metre" | "newton-metres" => tokens.push(Token::Unit(NewtonMeter)),
|
||||||
"kj" | "kilojoule" | "kilojoules" => tokens.push(Token::Unit(Kilojoule)),
|
"kj" | "kilojoule" | "kilojoules" => tokens.push(Token::Unit(Kilojoule)),
|
||||||
"mj" | "megajoule" | "megajoules" => tokens.push(Token::Unit(Megajoule)),
|
"mj" | "megajoule" | "megajoules" => tokens.push(Token::Unit(Megajoule)),
|
||||||
"gj" | "gigajoule" | "gigajoules" => tokens.push(Token::Unit(Gigajoule)),
|
"gj" | "gigajoule" | "gigajoules" => tokens.push(Token::Unit(Gigajoule)),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user