[READ-ONLY] Mirror of https://github.com/probablykasper/cpc. Text calculator with support for units and conversion cpc.kasper.space
calculator cli conversion converter library math package units units-converter wasm website
0

Configure Feed

Select the types of activity you want to include in your feed.

Add more currency units

Kasper (Jul 1, 2026, 5:36 AM +0200) 1e28a74d 80b2d52c

+58 -8
+3 -2
CHANGELOG.md
··· 1 1 # Changelog 2 2 3 3 ## Next 4 - - Add ambiguous unit resolution depending on context and user locale. `pound` can now become `GBP` or `lbs` 5 - - Add currency symbols like `€` 4 + - Add ambiguous unit resolution depending on context and user locale. 5 + - Add ambiguous units like `pound` 6 + - Add currency symbols like `€` and `kr` 6 7 - Add `as` and `into` keywords for unit conversion 7 8 - Fix some units not being simplified 8 9
+55 -6
src/lexer.rs
··· 22 22 "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" 23 23 | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" => true, 24 24 "Ω" | "Ω" | "µ" | "μ" | "ł" | "$" | "€" | "£" | "₹" | "₪" | "¥" | "₩" | "₱" | "฿" | "₺" 25 - | "₴" | "₫" => true, 25 + | "₴" | "₫" | "đ" | "Đ" | "č" => true, 26 26 _ => false, 27 27 } 28 28 } ··· 649 649 650 650 "AU$" => Token::unit(AUD), 651 651 "R$" => Token::unit(BRL), 652 - "CA$" | "C$" => Token::unit(CAD), 652 + "CA$" => Token::unit(CAD), 653 653 "€" | "euro" | "euros" => Token::unit(EUR), 654 654 "£" => Token::unit(GBP), 655 655 "HK$" => Token::unit(HKD), 656 656 "₹" | "Rs" => Token::unit(INR), 657 657 "₪" => Token::unit(ILS), 658 - "¥" => Token::unit(JPY), 659 - "₩" => Token::unit(KRW), 658 + "CN¥" => Token::unit(CNY), 659 + "JP¥" => Token::unit(JPY), 660 + "¥" => match get_region().as_str() { 661 + "JP" => Token::unit(JPY), 662 + "CN" => Token::unit(CNY), 663 + region => return Err(format!("\"¥\" is ambiguous in your region \"{region}\"")), 664 + }, 665 + "₩" => match get_region().as_str() { 666 + "KP" => Token::unit(KPW), 667 + _ => Token::unit(KRW), 668 + }, 660 669 "MX$" => Token::unit(MXN), 661 670 "NZ$" => Token::unit(NZD), 662 671 "₱" => Token::unit(PHP), ··· 665 674 "฿" => Token::unit(THB), 666 675 "tl" | "₺" => Token::unit(TRY), 667 676 "₴" => Token::unit(UAH), 668 - "$" | "US$" => Token::unit(USD), 669 - "₫" => Token::unit(VND), 677 + "US$" => Token::unit(USD), 678 + "$" => match get_region().as_str() { 679 + "CA" => Token::unit(CAD), 680 + "AU" | "TV" | "KI" => Token::unit(AUD), 681 + "NZ" => Token::unit(NZD), 682 + "SG" => Token::unit(SGD), 683 + "BS" => Token::unit(BSD), 684 + "BB" => Token::unit(BBD), 685 + "BZ" => Token::unit(BZD), 686 + "BM" => Token::unit(BMD), 687 + "BN" => Token::unit(BND), 688 + "KY" => Token::unit(KYD), 689 + "HK" => Token::unit(HKD), 690 + "TW" => Token::unit(TWD), 691 + "JM" => Token::unit(JMD), 692 + "GY" => Token::unit(GYD), 693 + "SR" => Token::unit(SRD), 694 + "TT" => Token::unit(TTD), 695 + "SB" => Token::unit(SBD), 696 + "FJ" => Token::unit(FJD), 697 + "NA" => Token::unit(NAD), 698 + "LR" => Token::unit(LRD), 699 + "AG" | "DM" | "GD" | "KN" | "LC" | "VC" | "MS" | "AI" => Token::unit(XCD), 700 + "MX" => Token::unit(MXN), 701 + "AR" => Token::unit(ARS), 702 + "CL" => Token::unit(CLP), 703 + "CO" => Token::unit(COP), 704 + "CU" => Token::unit(CUP), 705 + "DO" => Token::unit(DOP), 706 + "UY" => Token::unit(UYU), 707 + "MO" => Token::unit(MOP), 708 + _ => Token::unit(USD), 709 + }, 710 + "₫" | "đ" | "Đ" => Token::unit(VND), 711 + "kč" | "kc" => Token::unit(CZK), 712 + "kr" => match get_region().as_str() { 713 + "NO" => Token::unit(NOK), 714 + "SE" => Token::unit(SEK), 715 + "DK" => Token::unit(DKK), 716 + "IS" => Token::unit(ISK), 717 + region => return Err(format!("\"kr\" is ambiguous in your region \"{region}\"")), 718 + }, 670 719 671 720 string if let Ok(unit) = currency_code_to_unit(string) => Token::unit(unit), 672 721 string => {