#numeral #enums #list #roman

no-std 标称值

用于格式化各种系统中的标称指示器(例如,罗马数字)的crate

5个不稳定版本

0.3.1 2024年7月25日
0.3.0 2024年1月19日
0.2.2 2024年1月18日
0.1.0 2024年1月15日

38值格式化 中排名

Download history 24/week @ 2024-04-29 180/week @ 2024-05-06 41/week @ 2024-05-13 28/week @ 2024-05-20 10/week @ 2024-05-27 40/week @ 2024-06-03 15/week @ 2024-06-10 244/week @ 2024-06-17 13/week @ 2024-06-24 37/week @ 2024-07-08 6/week @ 2024-07-15 256/week @ 2024-07-22 55/week @ 2024-07-29 104/week @ 2024-08-05 23/week @ 2024-08-12

每月439次下载
用于 cushy

MIT/Apache

120KB
2.5K SLoC

标称值

nominals is considered alpha crate version Documentation for v0.3.1

此类格式化可用于创建类似HTML的 <ol> 标签的有序列表标识符。此crate是为Cushy中的List小部件而编写的。

此crate的原始实现受到了Typst中列表编号实现的启发。然而,此crate是一个全新的实现,具有全新编写的实现和类型。

use nominals::{Decimal, DigitCollection, Error, LetterLower, Nominal};

fn main() {
    // Formatting a nominal is as easy as calling to_nominal with the desired
    // nominal system.
    assert_eq!(0_u32.to_nominal(&Decimal), "0");
    // By default, alphabet systems treat their first symbol as 0 in the ones
    // place, but treat the first symbol as 1 in every other digit place.
    assert_eq!(0_u32.to_nominal(&LetterLower), "a");
    assert_eq!(1_u32.to_nominal(&LetterLower), "b");
    assert_eq!(26_u32.to_nominal(&LetterLower), "aa");

    // This behavior can be changed by using the one_based helper:
    assert_eq!(1_u32.to_nominal(&LetterLower.one_based()), "a");
    assert_eq!(2_u32.to_nominal(&LetterLower.one_based()), "b");
    assert_eq!(27_u32.to_nominal(&LetterLower.one_based()), "aa");
    // When a nominal can't be formatted with `to_nominal`, it falls back to
    // Decimal.
    assert_eq!(0_u32.to_nominal(&LetterLower.one_based()), "0");
    assert_eq!(
        0_u32.try_to_nominal(&LetterLower.one_based()).unwrap_err(),
        Error::NoZeroSymbol
    );
}

no_std 支持

此crate与no_std兼容,可以与和没有alloc一起运行。

支持系统

  • Decimal: 0‎ 1‎ 2‎ 3‎ 4‎ …‎ 9‎ 10‎ 11‎ 12‎ …‎ 99‎ 100‎ 101‎ 102
  • LetterLower: a‎ b‎ c‎ d‎ e‎ …‎ z‎ aa‎ ab‎ ac‎ …‎ yz‎ za‎ zb‎ zc
  • LetterUpper: A‎ B‎ C‎ D‎ E‎ …‎ Z‎ AA‎ AB‎ AC‎ …‎ YZ‎ ZA‎ ZB‎ ZC
  • RomanLower: i‎ ii‎ iii‎ iv‎ v‎ vi‎ …‎ ix‎ x‎ xi‎ …‎ mmmcmxcix‎ i̅v̅‎ i̅v̅i‎ …‎ d̅m̅l̅c̅i̅x̅cmxcix‎ m̅‎ m̅i
  • RomanUpper: I‎ II‎ III‎ IV‎ V‎ VI‎ …‎ IX‎ X‎ XI‎ …‎ MMMCMXCIX‎ I̅V̅‎ I̅V̅I‎ …‎ D̅M̅L̅C̅I̅X̅CMXCIX‎ M̅‎ M̅I
  • CircledNumber: ⓪‎ ①‎ ②‎ ③‎ ④‎ …‎ ⑨‎ ⑩‎ ⑪‎ ⑫‎ …‎ ㊽‎ ㊾‎ ㊿
  • DoubleCircledNumber: ⓵‎ ⓶‎ ⓷‎ ⓸‎ ⓹‎ ⓺‎ ⓻‎ ⓼‎ ⓽‎ ⓾
  • ArmenianLower: ա‎ բ‎ գ‎ …‎ թ‎ ժ‎ ժա‎ ժբ‎ …‎ ղթ‎ ճ‎ ճա
  • ArmenianUpper: Ա ‎ Բ‎ Գ‎ …‎ Թ‎ Ժ‎ ԺԱ ‎ ԺԲ‎ …‎ ՂԹ‎ Ճ‎ ՃԱ
  • Bengali: ০‎ ১‎ ২‎ ৩‎ ৪‎ …‎ ৯‎ ১০‎ ১১‎ ১২‎ …‎ ৯৯‎ ১০০‎ ১০১‎ ১০২
  • Cambodian:០ ១ ២ ៣ ៤ … ៩ ១០ ១១ ១២ … ៩៩ ១០០ ១០១ ១០២
  • SimplifiedChineseInformal:零 一 二 … 九 十 十一 … 十九 二十 二十一 … 九十九 一百 一百零一
  • TraditionalChineseInformal:零 一 二 … 九 十 十一 … 十九 二十 二十一 … 九十九 一百 一百零一
  • SimplifiedChineseFormal:零 一 二 … 九 一十 一十一 … 一十九 二十 二十一 … 九十九 一百 一百零一
  • TraditionalChineseFormal:零 一 二 … 九 一十 一十一 … 一十九 二十 二十一 … 九十九 一百 一百零一
  • CjkDecimal:〇 一 二 三 四 … 九 一〇 一一 一二 … 九九 一〇〇 一〇一 一〇二
  • CjkEarthlyBranch:子 丑 寅 卯 辰 … 亥 一三 一四 一五 … 一四四 一四五 一四六 一四七
  • CjkHeavenlyStem:甲 乙 丙 丁 戊 … 癸 一一 一二 一三 … 一〇〇 一〇一 一〇二 一〇三
  • Devanagari:० १ २ ३ ४ … ९ १० ११ १२ … ९९ १०० १०१ १०२
  • EasternArabic:٠ ١ ٢ ٣ ٤ … ٩ ١٠ ١١ ١٢ … ٩٩ ١٠٠ ١٠١ ١٠٢
  • Ethiopic:፩ ፪ ፫ … ፲ ፲፩ ፲፪ … ፺፱ ፻ ፻፩ … ፱፻፺፱ ፲፻ ፲፻፩
  • Georgian:ა ბ გ … თ ი ია იბ … ჟთ რ რა
  • GreekLower:α β γ δ ε … ω αα αβ αγ … ψω ωα ωβ ωγ
  • GreekUpper:Α Β Γ Δ Ε … Ω ΑΑ ΑΒ ΑΓ … ΨΩ ΩΑ ΩΒ ΩΓ
  • Gujarati:૦ ૧ ૨ ૩ ૪ … ૯ ૧૦ ૧૧ ૧૨ … ૯૯ ૧૦૦ ૧૦૧ ૧૦૨
  • Gurmukhi:੦ ੧ ੨ ੩ ੪ … ੯ ੧੦ ੧੧ ੧੨ … ੯੯ ੧੦੦ ੧੦੧ ੧੦੨
  • HanjaInformal:零 一 二 … 九 十 十一 … 十九 二十 二十一 … 九十九 百 百一
  • HangeulFormal:영 일 이 … 구 일십 일십일 … 일십구 이십 이십일 … 구십구 일백 일백일
  • HangeulJamo:ㄱ ㄴ ㄷ ㄹ ㅁ … ㅎ ㄱㄱ ㄱㄴ ㄱㄷ … ㅍㅎ ㅎㄱ ㅎㄴ ㅎㄷ
  • HangeulSyllable:가 나 다 라 마 … 하 가가 가나 가다 … 파하 하가 하나 하다
  • HanjaFormal:零 壹 貳 … 九 壹拾 壹拾壹 … 壹拾九 貳拾 貳拾壹 … 九拾九 壹百 壹百壹
  • Hebrew:‌א‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌
  • HexLower: 0 1 2 3 4 … f 10 11 12 … ff 100 101 102
  • HexUpper: 0 1 2 3 4 … F 10 11 12 … FF 100 101 102
  • Hiragana: あ い う え お … ん ああ あい あう … をん んあ んい んう
  • HiraganaIroha: い ろ は に ほ … す いい イロ イハ … セス スイ スロ スハ
  • JapaneseFormal: 零 壱 弐 … 九 壱拾 壱拾壱 … 壱拾九 弐拾 弐拾壱 … 九拾九 壱百 壱百壱
  • JapaneseInformal: 〇 一 二 … 九 十 十一 … 十九 二十 二十一 … 九十九 百 百一
  • Kannada: ೦ ೧ ೨ ೩ ೪ … ೯ ೧೦ ೧೧ ೧೨ … ೯೯ ೧೦೦ ೧೦೧ ೧೦೨
  • Katakana: ア イ ウ エ オ … ヌ アア アイ アウ … ヲン ヌア ヌイ ヌウ
  • KatakanaIroha: イ ロ ハ ニ ホ … ス イイ イロ イハ … セス スイ スロ スハ
  • Lao: ໐ ໑ ໒ ໓ ໔ … ໙ ໑໐ ໑໑ ໑໒ … ໙໙ ໑໐໐ ໑໐໑ ໑໐໒
  • Malayalam: ൦ ൧ ൨ ൩ ൪ … ൯ ൧൦ ൧൧ ൧൨ … ൯൯ ൧൦൦ ൧൦൧ ൧൦൨
  • Mongolian: ᠐ ᠑ ᠒ ᠓ ᠔ … ᠙ ᠑᠐ ᠑᠑ ᠑᠒ … ᠙᠙ ᠑᠐᠐ ᠑᠐᠑ ᠑᠐᠒
  • Myanmar: ၀ ၁ ၂ ၃ ၄ … ၉ ၁၀ ၁၁ ၁၂ … ၉၉ ၁၀၀ ၁၀၁ ၁၀၂
  • Oriya: ୦ ୧ ୨ ୩ ୪ … ୯ ୧୦ ୧୧ ୧୨ … ୯୯ ୧୦୦ ୧୦୧ ୧୦୨
  • Persian: ۰ ۱ ۲ ۳ ۴ … ۹ ۱۰ ۱۱ ۱۲ … ۹۹ ۱۰۰ ۱۰۱ ۱۰۲
  • Tamil: ௦ ௧ ௨ ௩ ௪ … ௯ ௧௦ ௧௧ ௧௨ … ௯௯ ௧௦௦ ௧௦௧ ௧௦௨
  • Telugu: ౦ ౧ ౨ ౩ ౪ … ౯ ౧౦ ౧౧ ౧౨ … ౯౯ ౧౦౦ ౧౦౧ ౧౦౨
  • Thai: ๐ ๑ ๒ ๓ ๔ … ๙ ๑๐ ๑๑ ๑๒ … ๙๙ ๑๐๐ ๑๐๑ ๑๐๒
  • Tibetan: ༠ ༡ ༢ ༣ ༤ … ༩ ༡༠ ༡༡ ༡༢ … ༩༩ ༡༠༠ ༡༠༡ ༡༠༢

开源许可

该项目,就像 Khonsu Labs 的所有项目一样,是开源的。此存储库在 MIT 许可证Apache 许可证 2.0 下可用。

要了解更多关于贡献的信息,请参阅 CONTRIBUTING.md

无运行时依赖