From d4dcbf7e401d3a42c6057428801d6de259ef6c74 Mon Sep 17 00:00:00 2001 From: triallax Date: Wed, 18 Sep 2024 18:57:47 +0100 Subject: [PATCH] Add lowercase aliases for currency units Fixes #441, `myr`/`rm` were not added due to conflict with `milliyear`/ `rontometer` respectively --- book/src/list-units.md | 56 ++++++++++++++--------------- numbat/modules/units/currencies.nbt | 56 ++++++++++++++--------------- numbat/src/lib.rs | 31 ++++++++++++++++ 3 files changed, 87 insertions(+), 56 deletions(-) diff --git a/book/src/list-units.md b/book/src/list-units.md index a3760f2c..e3210c36 100644 --- a/book/src/list-units.md +++ b/book/src/list-units.md @@ -122,36 +122,36 @@ and — where sensible — units allow for [binary prefixes](https://en.wikipedi | `Mass` | [Tonne](https://en.wikipedia.org/wiki/Tonne) | `metricton`, `ton`, `tonne`, `tonnes`, `tons` | | `Molality` | [Molal](https://en.wikipedia.org/wiki/Molality) | `molal` | | `Molarity` | [Molar](https://en.wikipedia.org/wiki/Molar_concentration) | `molar` | -| `Money` | [Australian dollar](https://en.wikipedia.org/wiki/Australian_dollar) | `A$`, `AUD`, `australian_dollar`, `australian_dollars` | -| `Money` | [Brazilian real](https://en.wikipedia.org/wiki/Brazilian_real) | `brazilian_real`, `brazilian_reals`, `BRL`, `R$` | -| `Money` | [Pound sterling](https://en.wikipedia.org/wiki/Pound_sterling) | `british_pound`, `GBP`, `pound_sterling`, `£` | -| `Money` | [Bulgarian lev](https://en.wikipedia.org/wiki/Bulgarian_lev) | `BGN`, `bulgarian_lev`, `bulgarian_leva` | -| `Money` | [Canadian dollar](https://en.wikipedia.org/wiki/Canadian_dollar) | `C$`, `CAD`, `canadian_dollar`, `canadian_dollars` | -| `Money` | [Czech koruna](https://en.wikipedia.org/wiki/Czech_koruna) | `czech_koruna`, `czech_korunas`, `CZK`, `Kč` | -| `Money` | [Danish krone](https://en.wikipedia.org/wiki/Danish_krone) | `danish_krone`, `danish_kroner`, `DKK` | -| `Money` | [US dollar](https://en.wikipedia.org/wiki/United_States_dollar) | `$`, `dollar`, `dollars`, `USD` | +| `Money` | [Australian dollar](https://en.wikipedia.org/wiki/Australian_dollar) | `A$`, `AUD`, `aud`, `australian_dollar`, `australian_dollars` | +| `Money` | [Brazilian real](https://en.wikipedia.org/wiki/Brazilian_real) | `brazilian_real`, `brazilian_reals`, `BRL`, `brl`, `R$`, `r$` | +| `Money` | [Pound sterling](https://en.wikipedia.org/wiki/Pound_sterling) | `british_pound`, `GBP`, `gbp`, `pound_sterling`, `£` | +| `Money` | [Bulgarian lev](https://en.wikipedia.org/wiki/Bulgarian_lev) | `BGN`, `bgn`, `bulgarian_lev`, `bulgarian_leva` | +| `Money` | [Canadian dollar](https://en.wikipedia.org/wiki/Canadian_dollar) | `C$`, `c$`, `CAD`, `cad`, `canadian_dollar`, `canadian_dollars` | +| `Money` | [Czech koruna](https://en.wikipedia.org/wiki/Czech_koruna) | `czech_koruna`, `czech_korunas`, `CZK`, `czk`, `Kč` | +| `Money` | [Danish krone](https://en.wikipedia.org/wiki/Danish_krone) | `danish_krone`, `danish_kroner`, `DKK`, `dkk` | +| `Money` | [US dollar](https://en.wikipedia.org/wiki/United_States_dollar) | `$`, `dollar`, `dollars`, `USD`, `usd` | | `Money` | [Euro](https://en.wikipedia.org/wiki/Euro) | `EUR`, `euro`, `euros`, `€` | -| `Money` | [Hong Kong dollar](https://en.wikipedia.org/wiki/Hong_Kong_dollar) | `HK$`, `HKD`, `hong_kong_dollar`, `hong_kong_dollars` | -| `Money` | [Hungarian forint](https://en.wikipedia.org/wiki/Hungarian_forint) | `Ft`, `HUF`, `hungarian_forint`, `hungarian_forints` | -| `Money` | [Icelandic króna](https://en.wikipedia.org/wiki/Icelandic_króna) | `icelandic_krona`, `icelandic_kronur`, `icelandic_króna`, `icelandic_krónur`, `ISK` | -| `Money` | [Indian rupee](https://en.wikipedia.org/wiki/Indian_rupee) | `indian_rupee`, `indian_rupees`, `INR`, `₹` | -| `Money` | [Indonesian rupiah](https://en.wikipedia.org/wiki/Indonesian_rupiah) | `IDR`, `indonesian_rupiah`, `indonesian_rupiahs`, `Rp` | -| `Money` | [Israeli new shekel](https://en.wikipedia.org/wiki/Israeli_new_shekel) | `ILS`, `israeli_new_shekel`, `israeli_new_shekels`, `NIS`, `₪` | +| `Money` | [Hong Kong dollar](https://en.wikipedia.org/wiki/Hong_Kong_dollar) | `HK$`, `hk$`, `HKD`, `hkd`, `hong_kong_dollar`, `hong_kong_dollars` | +| `Money` | [Hungarian forint](https://en.wikipedia.org/wiki/Hungarian_forint) | `Ft`, `HUF`, `huf`, `hungarian_forint`, `hungarian_forints` | +| `Money` | [Icelandic króna](https://en.wikipedia.org/wiki/Icelandic_króna) | `icelandic_krona`, `icelandic_kronur`, `icelandic_króna`, `icelandic_krónur`, `ISK`, `isk` | +| `Money` | [Indian rupee](https://en.wikipedia.org/wiki/Indian_rupee) | `indian_rupee`, `indian_rupees`, `INR`, `inr`, `₹` | +| `Money` | [Indonesian rupiah](https://en.wikipedia.org/wiki/Indonesian_rupiah) | `IDR`, `idr`, `indonesian_rupiah`, `indonesian_rupiahs`, `Rp` | +| `Money` | [Israeli new shekel](https://en.wikipedia.org/wiki/Israeli_new_shekel) | `ILS`, `ils`, `israeli_new_shekel`, `israeli_new_shekels`, `NIS`, `nis`, `₪` | | `Money` | [Malaysian ringgit](https://en.wikipedia.org/wiki/Malaysian_ringgit) | `malaysian_ringgit`, `malaysian_ringgits`, `MYR`, `RM` | -| `Money` | [New Zealand dollar](https://en.wikipedia.org/wiki/New_Zealand_dollar) | `new_zealand_dollar`, `new_zealand_dollars`, `NZ$`, `NZD` | -| `Money` | [Norwegian krone](https://en.wikipedia.org/wiki/Norwegian_krone) | `NOK`, `norwegian_krone`, `norwegian_kroner` | -| `Money` | [Philippine peso](https://en.wikipedia.org/wiki/Philippine_peso) | `philippine_peso`, `philippine_pesos`, `PHP`, `₱` | -| `Money` | [Polish złoty](https://en.wikipedia.org/wiki/Polish_złoty) | `PLN`, `polish_zloty`, `polish_zlotys`, `zł` | -| `Money` | [Chinese yuan](https://en.wikipedia.org/wiki/Renminbi) | `CNY`, `renminbi`, `yuan`, `元` | -| `Money` | [Romanian leu](https://en.wikipedia.org/wiki/Romanian_leu) | `lei`, `romanian_leu`, `romanian_leus`, `RON` | -| `Money` | [Singapore dollar](https://en.wikipedia.org/wiki/Singapore_dollar) | `S$`, `SGD`, `singapore_dollar`, `singapore_dollars` | -| `Money` | [South African rand](https://en.wikipedia.org/wiki/South_African_rand) | `south_african_rand`, `ZAR` | -| `Money` | [South Korean won](https://en.wikipedia.org/wiki/South_Korean_won) | `KRW`, `south_korean_won`, `south_korean_wons`, `₩` | -| `Money` | [Swedish krona](https://en.wikipedia.org/wiki/Swedish_krona) | `SEK`, `swedish_krona`, `swedish_kronor` | -| `Money` | [Swiss franc](https://en.wikipedia.org/wiki/Swiss_franc) | `CHF`, `swiss_franc`, `swiss_francs` | -| `Money` | [Thai baht](https://en.wikipedia.org/wiki/Thai_baht) | `thai_baht`, `thai_bahts`, `THB`, `฿` | -| `Money` | [Turkish lira](https://en.wikipedia.org/wiki/Turkish_lira) | `TRY`, `turkish_lira`, `turkish_liras`, `₺` | -| `Money` | [Japanese yen](https://en.wikipedia.org/wiki/Japanese_yen) | `JPY`, `yen`, `¥`, `円` | +| `Money` | [New Zealand dollar](https://en.wikipedia.org/wiki/New_Zealand_dollar) | `new_zealand_dollar`, `new_zealand_dollars`, `NZ$`, `nz$`, `NZD`, `nzd` | +| `Money` | [Norwegian krone](https://en.wikipedia.org/wiki/Norwegian_krone) | `NOK`, `nok`, `norwegian_krone`, `norwegian_kroner` | +| `Money` | [Philippine peso](https://en.wikipedia.org/wiki/Philippine_peso) | `philippine_peso`, `philippine_pesos`, `PHP`, `php`, `₱` | +| `Money` | [Polish złoty](https://en.wikipedia.org/wiki/Polish_złoty) | `PLN`, `pln`, `polish_zloty`, `polish_zlotys`, `zł` | +| `Money` | [Chinese yuan](https://en.wikipedia.org/wiki/Renminbi) | `CNY`, `cny`, `renminbi`, `yuan`, `元` | +| `Money` | [Romanian leu](https://en.wikipedia.org/wiki/Romanian_leu) | `lei`, `romanian_leu`, `romanian_leus`, `RON`, `ron` | +| `Money` | [Singapore dollar](https://en.wikipedia.org/wiki/Singapore_dollar) | `S$`, `SGD`, `sgd`, `singapore_dollar`, `singapore_dollars` | +| `Money` | [South African rand](https://en.wikipedia.org/wiki/South_African_rand) | `south_african_rand`, `ZAR`, `zar` | +| `Money` | [South Korean won](https://en.wikipedia.org/wiki/South_Korean_won) | `KRW`, `krw`, `south_korean_won`, `south_korean_wons`, `₩` | +| `Money` | [Swedish krona](https://en.wikipedia.org/wiki/Swedish_krona) | `SEK`, `sek`, `swedish_krona`, `swedish_kronor` | +| `Money` | [Swiss franc](https://en.wikipedia.org/wiki/Swiss_franc) | `CHF`, `chf`, `swiss_franc`, `swiss_francs` | +| `Money` | [Thai baht](https://en.wikipedia.org/wiki/Thai_baht) | `thai_baht`, `thai_bahts`, `THB`, `thb`, `฿` | +| `Money` | [Turkish lira](https://en.wikipedia.org/wiki/Turkish_lira) | `TRY`, `try`, `turkish_lira`, `turkish_liras`, `₺` | +| `Money` | [Japanese yen](https://en.wikipedia.org/wiki/Japanese_yen) | `JPY`, `jpy`, `yen`, `¥`, `円` | | `Person` | Person | `capita`, `people`, `person`, `persons` | | `Piece` | Piece | `piece`, `pieces` | | `Pixel` | [Pixel](https://en.wikipedia.org/wiki/Pixel) | `pixel`, `pixels`, `px` | diff --git a/numbat/modules/units/currencies.nbt b/numbat/modules/units/currencies.nbt index f5b9163f..4d1f06cf 100644 --- a/numbat/modules/units/currencies.nbt +++ b/numbat/modules/units/currencies.nbt @@ -10,92 +10,92 @@ fn exchange_rate(currency: String) -> Scalar @name("US dollar") @url("https://en.wikipedia.org/wiki/United_States_dollar") -@aliases(dollars, USD, $: short) +@aliases(dollars, USD, usd, $: short) unit dollar: Money = EUR / exchange_rate("USD") @name("Japanese yen") @url("https://en.wikipedia.org/wiki/Japanese_yen") -@aliases(JPY, ¥: short, 円) +@aliases(JPY, jpy, ¥: short, 円) unit yen: Money = EUR / exchange_rate("JPY") @name("Pound sterling") @url("https://en.wikipedia.org/wiki/Pound_sterling") -@aliases(pound_sterling, GBP, £: short) +@aliases(pound_sterling, GBP, gbp, £: short) unit british_pound: Money = EUR / exchange_rate("GBP") @name("Chinese yuan") @url("https://en.wikipedia.org/wiki/Renminbi") -@aliases(yuan, CNY: short, 元) +@aliases(yuan, CNY: short, cny, 元) unit renminbi: Money = EUR / exchange_rate("CNY") @name("Australian dollar") @url("https://en.wikipedia.org/wiki/Australian_dollar") -@aliases(australian_dollars, AUD: short, A$) +@aliases(australian_dollars, AUD: short, aud, A$) unit australian_dollar: Money = EUR / exchange_rate("AUD") @name("Canadian dollar") @url("https://en.wikipedia.org/wiki/Canadian_dollar") -@aliases(canadian_dollars, CAD: short, C$) +@aliases(canadian_dollars, CAD: short, cad, C$, c$) unit canadian_dollar: Money = EUR / exchange_rate("CAD") @name("Swiss franc") @url("https://en.wikipedia.org/wiki/Swiss_franc") -@aliases(swiss_francs, CHF: short) +@aliases(swiss_francs, CHF: short, chf) unit swiss_franc: Money = EUR / exchange_rate("CHF") @name("Bulgarian lev") @url("https://en.wikipedia.org/wiki/Bulgarian_lev") -@aliases(bulgarian_leva, BGN: short) +@aliases(bulgarian_leva, BGN: short, bgn) unit bulgarian_lev: Money = EUR / exchange_rate("BGN") @name("Czech koruna") @url("https://en.wikipedia.org/wiki/Czech_koruna") -@aliases(czech_korunas, CZK: short, Kč) +@aliases(czech_korunas, CZK: short, czk, Kč) unit czech_koruna: Money = EUR / exchange_rate("CZK") @name("Hungarian forint") @url("https://en.wikipedia.org/wiki/Hungarian_forint") -@aliases(hungarian_forints, HUF: short, Ft) +@aliases(hungarian_forints, HUF: short, huf, Ft) unit hungarian_forint: Money = EUR / exchange_rate("HUF") @name("Polish złoty") @url("https://en.wikipedia.org/wiki/Polish_złoty") -@aliases(polish_zlotys, PLN: short, zł) +@aliases(polish_zlotys, PLN: short, pln, zł) unit polish_zloty: Money = EUR / exchange_rate("PLN") @name("Romanian leu") @url("https://en.wikipedia.org/wiki/Romanian_leu") -@aliases(romanian_leus, RON: short, lei) +@aliases(romanian_leus, RON: short, ron, lei) unit romanian_leu: Money = EUR / exchange_rate("RON") @name("Turkish lira") @url("https://en.wikipedia.org/wiki/Turkish_lira") -@aliases(turkish_liras, TRY: short, ₺) +@aliases(turkish_liras, TRY: short, try, ₺) unit turkish_lira: Money = EUR / exchange_rate("TRY") @name("Brazilian real") @url("https://en.wikipedia.org/wiki/Brazilian_real") -@aliases(brazilian_reals, BRL: short, R$) +@aliases(brazilian_reals, BRL: short, brl, R$, r$) unit brazilian_real: Money = EUR / exchange_rate("BRL") @name("Hong Kong dollar") @url("https://en.wikipedia.org/wiki/Hong_Kong_dollar") -@aliases(hong_kong_dollars, HKD: short, HK$) +@aliases(hong_kong_dollars, HKD: short, hkd, HK$, hk$) unit hong_kong_dollar: Money = EUR / exchange_rate("HKD") @name("Indonesian rupiah") @url("https://en.wikipedia.org/wiki/Indonesian_rupiah") -@aliases(indonesian_rupiahs, IDR: short, Rp) +@aliases(indonesian_rupiahs, IDR: short, idr, Rp) unit indonesian_rupiah: Money = EUR / exchange_rate("IDR") @name("Indian rupee") @url("https://en.wikipedia.org/wiki/Indian_rupee") -@aliases(indian_rupees, INR: short, ₹) +@aliases(indian_rupees, INR: short, inr, ₹) unit indian_rupee: Money = EUR / exchange_rate("INR") @name("South Korean won") @url("https://en.wikipedia.org/wiki/South_Korean_won") -@aliases(south_korean_wons, KRW: short, ₩) +@aliases(south_korean_wons, KRW: short, krw, ₩) unit south_korean_won: Money = EUR / exchange_rate("KRW") @name("Malaysian ringgit") @@ -105,50 +105,50 @@ unit malaysian_ringgit: Money = EUR / exchange_rate("MYR") @name("New Zealand dollar") @url("https://en.wikipedia.org/wiki/New_Zealand_dollar") -@aliases(new_zealand_dollars, NZD: short, NZ$) +@aliases(new_zealand_dollars, NZD: short, nzd, NZ$, nz$) unit new_zealand_dollar: Money = EUR / exchange_rate("NZD") @name("Philippine peso") @url("https://en.wikipedia.org/wiki/Philippine_peso") -@aliases(philippine_pesos, PHP: short, ₱) +@aliases(philippine_pesos, PHP: short, php, ₱) unit philippine_peso: Money = EUR / exchange_rate("PHP") @name("Singapore dollar") @url("https://en.wikipedia.org/wiki/Singapore_dollar") -@aliases(singapore_dollars, SGD: short, S$) +@aliases(singapore_dollars, SGD: short, sgd, S$) unit singapore_dollar: Money = EUR / exchange_rate("SGD") @name("Thai baht") @url("https://en.wikipedia.org/wiki/Thai_baht") -@aliases(thai_bahts, THB: short, ฿) +@aliases(thai_bahts, THB: short, thb, ฿) unit thai_baht: Money = EUR / exchange_rate("THB") @name("Danish krone") @url("https://en.wikipedia.org/wiki/Danish_krone") -@aliases(danish_kroner, DKK: short) +@aliases(danish_kroner, DKK: short, dkk) unit danish_krone: Money = EUR / exchange_rate("DKK") @name("Swedish krona") @url("https://en.wikipedia.org/wiki/Swedish_krona") -@aliases(swedish_kronor, SEK: short) +@aliases(swedish_kronor, SEK: short, sek) unit swedish_krona: Money = EUR / exchange_rate("SEK") @name("Icelandic króna") @url("https://en.wikipedia.org/wiki/Icelandic_króna") -@aliases(icelandic_krónur, icelandic_krona, icelandic_kronur, ISK: short) +@aliases(icelandic_krónur, icelandic_krona, icelandic_kronur, ISK: short, isk) unit icelandic_króna: Money = EUR / exchange_rate("ISK") @name("Norwegian krone") @url("https://en.wikipedia.org/wiki/Norwegian_krone") -@aliases(norwegian_kroner, NOK: short) +@aliases(norwegian_kroner, NOK: short, nok) unit norwegian_krone: Money = EUR / exchange_rate("NOK") @name("Israeli new shekel") @url("https://en.wikipedia.org/wiki/Israeli_new_shekel") -@aliases(israeli_new_shekels, ILS: short, ₪, NIS) +@aliases(israeli_new_shekels, ILS: short, ils, ₪, NIS, nis) unit israeli_new_shekel: Money = EUR / exchange_rate("ILS") @name("South African rand") @url("https://en.wikipedia.org/wiki/South_African_rand") -@aliases(ZAR: short) +@aliases(ZAR: short, zar) unit south_african_rand: Money = EUR / exchange_rate("ZAR") diff --git a/numbat/src/lib.rs b/numbat/src/lib.rs index 555940e1..a400aaba 100644 --- a/numbat/src/lib.rs +++ b/numbat/src/lib.rs @@ -612,20 +612,25 @@ impl Context { const CURRENCY_IDENTIFIERS: &[&str] = &[ "$", "USD", + "usd", "dollar", "dollars", "A$", "AUD", + "aud", "australian_dollar", "australian_dollars", "C$", "CAD", + "cad", "canadian_dollar", "canadian_dollars", "CHF", + "chf", "swiss_franc", "swiss_francs", "CNY", + "cny", "yuan", "renminbi", "元", @@ -634,10 +639,12 @@ impl Context { "euros", "€", "GBP", + "gbp", "british_pound", "pound_sterling", "£", "JPY", + "jpy", "yen", "yens", "¥", @@ -645,45 +652,57 @@ impl Context { "bulgarian_lev", "bulgarian_leva", "BGN", + "bgn", "czech_koruna", "czech_korunas", "CZK", + "czk", "Kč", "hungarian_forint", "hungarian_forints", "HUF", + "huf", "Ft", "polish_zloty", "polish_zlotys", "PLN", + "pln", "zł", "romanian_leu", "romanian_leus", "RON", + "ron", "lei", "turkish_lira", "turkish_liras", "TRY", + "try", "₺", "brazilian_real", "brazilian_reals", "BRL", + "brl", "R$", "hong_kong_dollar", "hong_kong_dollars", "HKD", + "hkd", "HK$", + "hk$", "indonesian_rupiah", "indonesian_rupiahs", "IDR", + "idr", "Rp", "indian_rupee", "indian_rupees", "INR", + "inr", "₹", "south_korean_won", "south_korean_wons", "KRW", + "krw", "₩", "malaysian_ringgit", "malaysian_ringgits", @@ -692,38 +711,50 @@ impl Context { "new_zealand_dollar", "new_zealand_dollars", "NZD", + "nzd", "NZ$", + "nz$", "philippine_peso", "philippine_pesos", "PHP", + "php", "₱", "singapore_dollar", "singapore_dollars", "SGD", + "sgd", "S$", "thai_baht", "thai_bahts", "THB", + "thb", "฿", "danish_krone", "danish_kroner", "DKK", + "dkk", "swedish_krona", "swedish_kronor", "SEK", + "sek", "icelandic_króna", "icelandic_krónur", "ISK", + "isk", "norwegian_krone", "norwegian_kroner", "NOK", + "nok", "israeli_new_shekel", "israeli_new_shekels", "ILS", + "ils", "₪", "NIS", + "nis", "south_african_rand", "ZAR", + "zar", ]; if CURRENCY_IDENTIFIERS.contains(&identifier.as_str()) { let mut no_print_settings = InterpreterSettings {