From 618754acac56f9446f8ce898a5bf1f917975a130 Mon Sep 17 00:00:00 2001 From: Alex-Wengg Date: Thu, 12 Mar 2026 22:49:05 -0400 Subject: [PATCH 1/2] refactor: rename asr/ to itn/ and tts/ to tn/ to match NeMo convention Rename module directories to use standard NeMo terminology: - src/asr/ -> src/itn/ (Inverse Text Normalization) - src/tts/ -> src/tn/ (Text Normalization) Update all module references in lib.rs, tests, and docs. --- CLAUDE.md | 4 +- src/{asr => itn}/de/cardinal.rs | 0 src/{asr => itn}/de/date.rs | 0 src/{asr => itn}/de/decimal.rs | 0 src/{asr => itn}/de/electronic.rs | 0 src/{asr => itn}/de/fraction.rs | 0 src/{asr => itn}/de/measure.rs | 0 src/{asr => itn}/de/mod.rs | 0 src/{asr => itn}/de/money.rs | 0 src/{asr => itn}/de/ordinal.rs | 0 src/{asr => itn}/de/punctuation.rs | 0 src/{asr => itn}/de/telephone.rs | 0 src/{asr => itn}/de/time.rs | 0 src/{asr => itn}/de/whitelist.rs | 0 src/{asr => itn}/de/word.rs | 0 src/{asr => itn}/en/cardinal.rs | 0 src/{asr => itn}/en/date.rs | 0 src/{asr => itn}/en/decimal.rs | 0 src/{asr => itn}/en/electronic.rs | 0 src/{asr => itn}/en/measure.rs | 0 src/{asr => itn}/en/mod.rs | 0 src/{asr => itn}/en/money.rs | 0 src/{asr => itn}/en/ordinal.rs | 0 src/{asr => itn}/en/punctuation.rs | 0 src/{asr => itn}/en/telephone.rs | 0 src/{asr => itn}/en/time.rs | 0 src/{asr => itn}/en/whitelist.rs | 0 src/{asr => itn}/en/word.rs | 0 src/{asr => itn}/es/cardinal.rs | 0 src/{asr => itn}/es/date.rs | 0 src/{asr => itn}/es/decimal.rs | 0 src/{asr => itn}/es/electronic.rs | 0 src/{asr => itn}/es/fraction.rs | 0 src/{asr => itn}/es/measure.rs | 0 src/{asr => itn}/es/mod.rs | 0 src/{asr => itn}/es/money.rs | 0 src/{asr => itn}/es/ordinal.rs | 0 src/{asr => itn}/es/punctuation.rs | 0 src/{asr => itn}/es/telephone.rs | 0 src/{asr => itn}/es/time.rs | 0 src/{asr => itn}/es/whitelist.rs | 0 src/{asr => itn}/es/word.rs | 0 src/{asr => itn}/fr/cardinal.rs | 0 src/{asr => itn}/fr/date.rs | 0 src/{asr => itn}/fr/decimal.rs | 0 src/{asr => itn}/fr/electronic.rs | 0 src/{asr => itn}/fr/measure.rs | 0 src/{asr => itn}/fr/mod.rs | 0 src/{asr => itn}/fr/money.rs | 0 src/{asr => itn}/fr/ordinal.rs | 0 src/{asr => itn}/fr/punctuation.rs | 0 src/{asr => itn}/fr/telephone.rs | 0 src/{asr => itn}/fr/time.rs | 0 src/{asr => itn}/fr/whitelist.rs | 0 src/{asr => itn}/fr/word.rs | 0 src/{asr => itn}/hi/address.rs | 0 src/{asr => itn}/hi/cardinal.rs | 0 src/{asr => itn}/hi/date.rs | 0 src/{asr => itn}/hi/decimal.rs | 0 src/{asr => itn}/hi/fraction.rs | 0 src/{asr => itn}/hi/measure.rs | 0 src/{asr => itn}/hi/mod.rs | 0 src/{asr => itn}/hi/money.rs | 0 src/{asr => itn}/hi/ordinal.rs | 0 src/{asr => itn}/hi/telephone.rs | 0 src/{asr => itn}/hi/time.rs | 0 src/{asr => itn}/hi/whitelist.rs | 0 src/{asr => itn}/hi/word.rs | 0 src/{asr => itn}/ja/cardinal.rs | 0 src/{asr => itn}/ja/date.rs | 0 src/{asr => itn}/ja/decimal.rs | 0 src/{asr => itn}/ja/fraction.rs | 0 src/{asr => itn}/ja/mod.rs | 0 src/{asr => itn}/ja/ordinal.rs | 0 src/{asr => itn}/ja/time.rs | 0 src/{asr => itn}/mod.rs | 0 src/{asr => itn}/zh/cardinal.rs | 0 src/{asr => itn}/zh/date.rs | 0 src/{asr => itn}/zh/decimal.rs | 0 src/{asr => itn}/zh/fraction.rs | 0 src/{asr => itn}/zh/mod.rs | 0 src/{asr => itn}/zh/money.rs | 0 src/{asr => itn}/zh/ordinal.rs | 0 src/{asr => itn}/zh/time.rs | 0 src/{asr => itn}/zh/whitelist.rs | 0 src/{asr => itn}/zh/word.rs | 0 src/lib.rs | 306 ++++++++++++++--------------- src/{tts => tn}/de/cardinal.rs | 0 src/{tts => tn}/de/date.rs | 0 src/{tts => tn}/de/decimal.rs | 0 src/{tts => tn}/de/electronic.rs | 0 src/{tts => tn}/de/measure.rs | 0 src/{tts => tn}/de/mod.rs | 0 src/{tts => tn}/de/money.rs | 0 src/{tts => tn}/de/ordinal.rs | 0 src/{tts => tn}/de/telephone.rs | 0 src/{tts => tn}/de/time.rs | 0 src/{tts => tn}/de/whitelist.rs | 0 src/{tts => tn}/en/cardinal.rs | 0 src/{tts => tn}/en/date.rs | 0 src/{tts => tn}/en/decimal.rs | 0 src/{tts => tn}/en/electronic.rs | 0 src/{tts => tn}/en/measure.rs | 0 src/{tts => tn}/en/mod.rs | 0 src/{tts => tn}/en/money.rs | 0 src/{tts => tn}/en/ordinal.rs | 0 src/{tts => tn}/en/telephone.rs | 0 src/{tts => tn}/en/time.rs | 0 src/{tts => tn}/en/whitelist.rs | 0 src/{tts => tn}/es/cardinal.rs | 0 src/{tts => tn}/es/date.rs | 0 src/{tts => tn}/es/decimal.rs | 0 src/{tts => tn}/es/electronic.rs | 0 src/{tts => tn}/es/measure.rs | 0 src/{tts => tn}/es/mod.rs | 0 src/{tts => tn}/es/money.rs | 0 src/{tts => tn}/es/ordinal.rs | 0 src/{tts => tn}/es/telephone.rs | 0 src/{tts => tn}/es/time.rs | 0 src/{tts => tn}/es/whitelist.rs | 0 src/{tts => tn}/fr/cardinal.rs | 0 src/{tts => tn}/fr/date.rs | 0 src/{tts => tn}/fr/decimal.rs | 0 src/{tts => tn}/fr/electronic.rs | 0 src/{tts => tn}/fr/measure.rs | 0 src/{tts => tn}/fr/mod.rs | 0 src/{tts => tn}/fr/money.rs | 0 src/{tts => tn}/fr/ordinal.rs | 0 src/{tts => tn}/fr/telephone.rs | 0 src/{tts => tn}/fr/time.rs | 0 src/{tts => tn}/fr/whitelist.rs | 0 src/{tts => tn}/hi/cardinal.rs | 0 src/{tts => tn}/hi/date.rs | 0 src/{tts => tn}/hi/decimal.rs | 0 src/{tts => tn}/hi/electronic.rs | 0 src/{tts => tn}/hi/measure.rs | 0 src/{tts => tn}/hi/mod.rs | 0 src/{tts => tn}/hi/money.rs | 0 src/{tts => tn}/hi/ordinal.rs | 0 src/{tts => tn}/hi/telephone.rs | 0 src/{tts => tn}/hi/time.rs | 0 src/{tts => tn}/hi/whitelist.rs | 0 src/{tts => tn}/ja/cardinal.rs | 0 src/{tts => tn}/ja/date.rs | 0 src/{tts => tn}/ja/decimal.rs | 0 src/{tts => tn}/ja/electronic.rs | 0 src/{tts => tn}/ja/measure.rs | 0 src/{tts => tn}/ja/mod.rs | 0 src/{tts => tn}/ja/money.rs | 0 src/{tts => tn}/ja/ordinal.rs | 0 src/{tts => tn}/ja/telephone.rs | 0 src/{tts => tn}/ja/time.rs | 0 src/{tts => tn}/ja/whitelist.rs | 0 src/{tts => tn}/mod.rs | 0 src/{tts => tn}/zh/cardinal.rs | 0 src/{tts => tn}/zh/date.rs | 0 src/{tts => tn}/zh/decimal.rs | 0 src/{tts => tn}/zh/electronic.rs | 0 src/{tts => tn}/zh/measure.rs | 0 src/{tts => tn}/zh/mod.rs | 0 src/{tts => tn}/zh/money.rs | 0 src/{tts => tn}/zh/ordinal.rs | 0 src/{tts => tn}/zh/telephone.rs | 0 src/{tts => tn}/zh/time.rs | 0 src/{tts => tn}/zh/whitelist.rs | 0 tests/extensive_tests.rs | 2 +- 166 files changed, 156 insertions(+), 156 deletions(-) rename src/{asr => itn}/de/cardinal.rs (100%) rename src/{asr => itn}/de/date.rs (100%) rename src/{asr => itn}/de/decimal.rs (100%) rename src/{asr => itn}/de/electronic.rs (100%) rename src/{asr => itn}/de/fraction.rs (100%) rename src/{asr => itn}/de/measure.rs (100%) rename src/{asr => itn}/de/mod.rs (100%) rename src/{asr => itn}/de/money.rs (100%) rename src/{asr => itn}/de/ordinal.rs (100%) rename src/{asr => itn}/de/punctuation.rs (100%) rename src/{asr => itn}/de/telephone.rs (100%) rename src/{asr => itn}/de/time.rs (100%) rename src/{asr => itn}/de/whitelist.rs (100%) rename src/{asr => itn}/de/word.rs (100%) rename src/{asr => itn}/en/cardinal.rs (100%) rename src/{asr => itn}/en/date.rs (100%) rename src/{asr => itn}/en/decimal.rs (100%) rename src/{asr => itn}/en/electronic.rs (100%) rename src/{asr => itn}/en/measure.rs (100%) rename src/{asr => itn}/en/mod.rs (100%) rename src/{asr => itn}/en/money.rs (100%) rename src/{asr => itn}/en/ordinal.rs (100%) rename src/{asr => itn}/en/punctuation.rs (100%) rename src/{asr => itn}/en/telephone.rs (100%) rename src/{asr => itn}/en/time.rs (100%) rename src/{asr => itn}/en/whitelist.rs (100%) rename src/{asr => itn}/en/word.rs (100%) rename src/{asr => itn}/es/cardinal.rs (100%) rename src/{asr => itn}/es/date.rs (100%) rename src/{asr => itn}/es/decimal.rs (100%) rename src/{asr => itn}/es/electronic.rs (100%) rename src/{asr => itn}/es/fraction.rs (100%) rename src/{asr => itn}/es/measure.rs (100%) rename src/{asr => itn}/es/mod.rs (100%) rename src/{asr => itn}/es/money.rs (100%) rename src/{asr => itn}/es/ordinal.rs (100%) rename src/{asr => itn}/es/punctuation.rs (100%) rename src/{asr => itn}/es/telephone.rs (100%) rename src/{asr => itn}/es/time.rs (100%) rename src/{asr => itn}/es/whitelist.rs (100%) rename src/{asr => itn}/es/word.rs (100%) rename src/{asr => itn}/fr/cardinal.rs (100%) rename src/{asr => itn}/fr/date.rs (100%) rename src/{asr => itn}/fr/decimal.rs (100%) rename src/{asr => itn}/fr/electronic.rs (100%) rename src/{asr => itn}/fr/measure.rs (100%) rename src/{asr => itn}/fr/mod.rs (100%) rename src/{asr => itn}/fr/money.rs (100%) rename src/{asr => itn}/fr/ordinal.rs (100%) rename src/{asr => itn}/fr/punctuation.rs (100%) rename src/{asr => itn}/fr/telephone.rs (100%) rename src/{asr => itn}/fr/time.rs (100%) rename src/{asr => itn}/fr/whitelist.rs (100%) rename src/{asr => itn}/fr/word.rs (100%) rename src/{asr => itn}/hi/address.rs (100%) rename src/{asr => itn}/hi/cardinal.rs (100%) rename src/{asr => itn}/hi/date.rs (100%) rename src/{asr => itn}/hi/decimal.rs (100%) rename src/{asr => itn}/hi/fraction.rs (100%) rename src/{asr => itn}/hi/measure.rs (100%) rename src/{asr => itn}/hi/mod.rs (100%) rename src/{asr => itn}/hi/money.rs (100%) rename src/{asr => itn}/hi/ordinal.rs (100%) rename src/{asr => itn}/hi/telephone.rs (100%) rename src/{asr => itn}/hi/time.rs (100%) rename src/{asr => itn}/hi/whitelist.rs (100%) rename src/{asr => itn}/hi/word.rs (100%) rename src/{asr => itn}/ja/cardinal.rs (100%) rename src/{asr => itn}/ja/date.rs (100%) rename src/{asr => itn}/ja/decimal.rs (100%) rename src/{asr => itn}/ja/fraction.rs (100%) rename src/{asr => itn}/ja/mod.rs (100%) rename src/{asr => itn}/ja/ordinal.rs (100%) rename src/{asr => itn}/ja/time.rs (100%) rename src/{asr => itn}/mod.rs (100%) rename src/{asr => itn}/zh/cardinal.rs (100%) rename src/{asr => itn}/zh/date.rs (100%) rename src/{asr => itn}/zh/decimal.rs (100%) rename src/{asr => itn}/zh/fraction.rs (100%) rename src/{asr => itn}/zh/mod.rs (100%) rename src/{asr => itn}/zh/money.rs (100%) rename src/{asr => itn}/zh/ordinal.rs (100%) rename src/{asr => itn}/zh/time.rs (100%) rename src/{asr => itn}/zh/whitelist.rs (100%) rename src/{asr => itn}/zh/word.rs (100%) rename src/{tts => tn}/de/cardinal.rs (100%) rename src/{tts => tn}/de/date.rs (100%) rename src/{tts => tn}/de/decimal.rs (100%) rename src/{tts => tn}/de/electronic.rs (100%) rename src/{tts => tn}/de/measure.rs (100%) rename src/{tts => tn}/de/mod.rs (100%) rename src/{tts => tn}/de/money.rs (100%) rename src/{tts => tn}/de/ordinal.rs (100%) rename src/{tts => tn}/de/telephone.rs (100%) rename src/{tts => tn}/de/time.rs (100%) rename src/{tts => tn}/de/whitelist.rs (100%) rename src/{tts => tn}/en/cardinal.rs (100%) rename src/{tts => tn}/en/date.rs (100%) rename src/{tts => tn}/en/decimal.rs (100%) rename src/{tts => tn}/en/electronic.rs (100%) rename src/{tts => tn}/en/measure.rs (100%) rename src/{tts => tn}/en/mod.rs (100%) rename src/{tts => tn}/en/money.rs (100%) rename src/{tts => tn}/en/ordinal.rs (100%) rename src/{tts => tn}/en/telephone.rs (100%) rename src/{tts => tn}/en/time.rs (100%) rename src/{tts => tn}/en/whitelist.rs (100%) rename src/{tts => tn}/es/cardinal.rs (100%) rename src/{tts => tn}/es/date.rs (100%) rename src/{tts => tn}/es/decimal.rs (100%) rename src/{tts => tn}/es/electronic.rs (100%) rename src/{tts => tn}/es/measure.rs (100%) rename src/{tts => tn}/es/mod.rs (100%) rename src/{tts => tn}/es/money.rs (100%) rename src/{tts => tn}/es/ordinal.rs (100%) rename src/{tts => tn}/es/telephone.rs (100%) rename src/{tts => tn}/es/time.rs (100%) rename src/{tts => tn}/es/whitelist.rs (100%) rename src/{tts => tn}/fr/cardinal.rs (100%) rename src/{tts => tn}/fr/date.rs (100%) rename src/{tts => tn}/fr/decimal.rs (100%) rename src/{tts => tn}/fr/electronic.rs (100%) rename src/{tts => tn}/fr/measure.rs (100%) rename src/{tts => tn}/fr/mod.rs (100%) rename src/{tts => tn}/fr/money.rs (100%) rename src/{tts => tn}/fr/ordinal.rs (100%) rename src/{tts => tn}/fr/telephone.rs (100%) rename src/{tts => tn}/fr/time.rs (100%) rename src/{tts => tn}/fr/whitelist.rs (100%) rename src/{tts => tn}/hi/cardinal.rs (100%) rename src/{tts => tn}/hi/date.rs (100%) rename src/{tts => tn}/hi/decimal.rs (100%) rename src/{tts => tn}/hi/electronic.rs (100%) rename src/{tts => tn}/hi/measure.rs (100%) rename src/{tts => tn}/hi/mod.rs (100%) rename src/{tts => tn}/hi/money.rs (100%) rename src/{tts => tn}/hi/ordinal.rs (100%) rename src/{tts => tn}/hi/telephone.rs (100%) rename src/{tts => tn}/hi/time.rs (100%) rename src/{tts => tn}/hi/whitelist.rs (100%) rename src/{tts => tn}/ja/cardinal.rs (100%) rename src/{tts => tn}/ja/date.rs (100%) rename src/{tts => tn}/ja/decimal.rs (100%) rename src/{tts => tn}/ja/electronic.rs (100%) rename src/{tts => tn}/ja/measure.rs (100%) rename src/{tts => tn}/ja/mod.rs (100%) rename src/{tts => tn}/ja/money.rs (100%) rename src/{tts => tn}/ja/ordinal.rs (100%) rename src/{tts => tn}/ja/telephone.rs (100%) rename src/{tts => tn}/ja/time.rs (100%) rename src/{tts => tn}/ja/whitelist.rs (100%) rename src/{tts => tn}/mod.rs (100%) rename src/{tts => tn}/zh/cardinal.rs (100%) rename src/{tts => tn}/zh/date.rs (100%) rename src/{tts => tn}/zh/decimal.rs (100%) rename src/{tts => tn}/zh/electronic.rs (100%) rename src/{tts => tn}/zh/measure.rs (100%) rename src/{tts => tn}/zh/mod.rs (100%) rename src/{tts => tn}/zh/money.rs (100%) rename src/{tts => tn}/zh/ordinal.rs (100%) rename src/{tts => tn}/zh/telephone.rs (100%) rename src/{tts => tn}/zh/time.rs (100%) rename src/{tts => tn}/zh/whitelist.rs (100%) diff --git a/CLAUDE.md b/CLAUDE.md index 6cb52d0..31ce91e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -16,8 +16,8 @@ cargo build --features ffi ## Project Structure -- `src/asr/` - ITN taggers (spoken to written, for ASR/STT post-processing) -- `src/tts/` - TN taggers (written to spoken, for TTS preprocessing) +- `src/itn/` - ITN taggers (spoken to written, Inverse Text Normalization) +- `src/tn/` - TN taggers (written to spoken, Text Normalization) - `src/custom_rules.rs` - User-defined custom normalization rules - `src/ffi.rs` - C FFI bindings for Swift/Python integration - `tests/` - Integration and extensive edge-case tests diff --git a/src/asr/de/cardinal.rs b/src/itn/de/cardinal.rs similarity index 100% rename from src/asr/de/cardinal.rs rename to src/itn/de/cardinal.rs diff --git a/src/asr/de/date.rs b/src/itn/de/date.rs similarity index 100% rename from src/asr/de/date.rs rename to src/itn/de/date.rs diff --git a/src/asr/de/decimal.rs b/src/itn/de/decimal.rs similarity index 100% rename from src/asr/de/decimal.rs rename to src/itn/de/decimal.rs diff --git a/src/asr/de/electronic.rs b/src/itn/de/electronic.rs similarity index 100% rename from src/asr/de/electronic.rs rename to src/itn/de/electronic.rs diff --git a/src/asr/de/fraction.rs b/src/itn/de/fraction.rs similarity index 100% rename from src/asr/de/fraction.rs rename to src/itn/de/fraction.rs diff --git a/src/asr/de/measure.rs b/src/itn/de/measure.rs similarity index 100% rename from src/asr/de/measure.rs rename to src/itn/de/measure.rs diff --git a/src/asr/de/mod.rs b/src/itn/de/mod.rs similarity index 100% rename from src/asr/de/mod.rs rename to src/itn/de/mod.rs diff --git a/src/asr/de/money.rs b/src/itn/de/money.rs similarity index 100% rename from src/asr/de/money.rs rename to src/itn/de/money.rs diff --git a/src/asr/de/ordinal.rs b/src/itn/de/ordinal.rs similarity index 100% rename from src/asr/de/ordinal.rs rename to src/itn/de/ordinal.rs diff --git a/src/asr/de/punctuation.rs b/src/itn/de/punctuation.rs similarity index 100% rename from src/asr/de/punctuation.rs rename to src/itn/de/punctuation.rs diff --git a/src/asr/de/telephone.rs b/src/itn/de/telephone.rs similarity index 100% rename from src/asr/de/telephone.rs rename to src/itn/de/telephone.rs diff --git a/src/asr/de/time.rs b/src/itn/de/time.rs similarity index 100% rename from src/asr/de/time.rs rename to src/itn/de/time.rs diff --git a/src/asr/de/whitelist.rs b/src/itn/de/whitelist.rs similarity index 100% rename from src/asr/de/whitelist.rs rename to src/itn/de/whitelist.rs diff --git a/src/asr/de/word.rs b/src/itn/de/word.rs similarity index 100% rename from src/asr/de/word.rs rename to src/itn/de/word.rs diff --git a/src/asr/en/cardinal.rs b/src/itn/en/cardinal.rs similarity index 100% rename from src/asr/en/cardinal.rs rename to src/itn/en/cardinal.rs diff --git a/src/asr/en/date.rs b/src/itn/en/date.rs similarity index 100% rename from src/asr/en/date.rs rename to src/itn/en/date.rs diff --git a/src/asr/en/decimal.rs b/src/itn/en/decimal.rs similarity index 100% rename from src/asr/en/decimal.rs rename to src/itn/en/decimal.rs diff --git a/src/asr/en/electronic.rs b/src/itn/en/electronic.rs similarity index 100% rename from src/asr/en/electronic.rs rename to src/itn/en/electronic.rs diff --git a/src/asr/en/measure.rs b/src/itn/en/measure.rs similarity index 100% rename from src/asr/en/measure.rs rename to src/itn/en/measure.rs diff --git a/src/asr/en/mod.rs b/src/itn/en/mod.rs similarity index 100% rename from src/asr/en/mod.rs rename to src/itn/en/mod.rs diff --git a/src/asr/en/money.rs b/src/itn/en/money.rs similarity index 100% rename from src/asr/en/money.rs rename to src/itn/en/money.rs diff --git a/src/asr/en/ordinal.rs b/src/itn/en/ordinal.rs similarity index 100% rename from src/asr/en/ordinal.rs rename to src/itn/en/ordinal.rs diff --git a/src/asr/en/punctuation.rs b/src/itn/en/punctuation.rs similarity index 100% rename from src/asr/en/punctuation.rs rename to src/itn/en/punctuation.rs diff --git a/src/asr/en/telephone.rs b/src/itn/en/telephone.rs similarity index 100% rename from src/asr/en/telephone.rs rename to src/itn/en/telephone.rs diff --git a/src/asr/en/time.rs b/src/itn/en/time.rs similarity index 100% rename from src/asr/en/time.rs rename to src/itn/en/time.rs diff --git a/src/asr/en/whitelist.rs b/src/itn/en/whitelist.rs similarity index 100% rename from src/asr/en/whitelist.rs rename to src/itn/en/whitelist.rs diff --git a/src/asr/en/word.rs b/src/itn/en/word.rs similarity index 100% rename from src/asr/en/word.rs rename to src/itn/en/word.rs diff --git a/src/asr/es/cardinal.rs b/src/itn/es/cardinal.rs similarity index 100% rename from src/asr/es/cardinal.rs rename to src/itn/es/cardinal.rs diff --git a/src/asr/es/date.rs b/src/itn/es/date.rs similarity index 100% rename from src/asr/es/date.rs rename to src/itn/es/date.rs diff --git a/src/asr/es/decimal.rs b/src/itn/es/decimal.rs similarity index 100% rename from src/asr/es/decimal.rs rename to src/itn/es/decimal.rs diff --git a/src/asr/es/electronic.rs b/src/itn/es/electronic.rs similarity index 100% rename from src/asr/es/electronic.rs rename to src/itn/es/electronic.rs diff --git a/src/asr/es/fraction.rs b/src/itn/es/fraction.rs similarity index 100% rename from src/asr/es/fraction.rs rename to src/itn/es/fraction.rs diff --git a/src/asr/es/measure.rs b/src/itn/es/measure.rs similarity index 100% rename from src/asr/es/measure.rs rename to src/itn/es/measure.rs diff --git a/src/asr/es/mod.rs b/src/itn/es/mod.rs similarity index 100% rename from src/asr/es/mod.rs rename to src/itn/es/mod.rs diff --git a/src/asr/es/money.rs b/src/itn/es/money.rs similarity index 100% rename from src/asr/es/money.rs rename to src/itn/es/money.rs diff --git a/src/asr/es/ordinal.rs b/src/itn/es/ordinal.rs similarity index 100% rename from src/asr/es/ordinal.rs rename to src/itn/es/ordinal.rs diff --git a/src/asr/es/punctuation.rs b/src/itn/es/punctuation.rs similarity index 100% rename from src/asr/es/punctuation.rs rename to src/itn/es/punctuation.rs diff --git a/src/asr/es/telephone.rs b/src/itn/es/telephone.rs similarity index 100% rename from src/asr/es/telephone.rs rename to src/itn/es/telephone.rs diff --git a/src/asr/es/time.rs b/src/itn/es/time.rs similarity index 100% rename from src/asr/es/time.rs rename to src/itn/es/time.rs diff --git a/src/asr/es/whitelist.rs b/src/itn/es/whitelist.rs similarity index 100% rename from src/asr/es/whitelist.rs rename to src/itn/es/whitelist.rs diff --git a/src/asr/es/word.rs b/src/itn/es/word.rs similarity index 100% rename from src/asr/es/word.rs rename to src/itn/es/word.rs diff --git a/src/asr/fr/cardinal.rs b/src/itn/fr/cardinal.rs similarity index 100% rename from src/asr/fr/cardinal.rs rename to src/itn/fr/cardinal.rs diff --git a/src/asr/fr/date.rs b/src/itn/fr/date.rs similarity index 100% rename from src/asr/fr/date.rs rename to src/itn/fr/date.rs diff --git a/src/asr/fr/decimal.rs b/src/itn/fr/decimal.rs similarity index 100% rename from src/asr/fr/decimal.rs rename to src/itn/fr/decimal.rs diff --git a/src/asr/fr/electronic.rs b/src/itn/fr/electronic.rs similarity index 100% rename from src/asr/fr/electronic.rs rename to src/itn/fr/electronic.rs diff --git a/src/asr/fr/measure.rs b/src/itn/fr/measure.rs similarity index 100% rename from src/asr/fr/measure.rs rename to src/itn/fr/measure.rs diff --git a/src/asr/fr/mod.rs b/src/itn/fr/mod.rs similarity index 100% rename from src/asr/fr/mod.rs rename to src/itn/fr/mod.rs diff --git a/src/asr/fr/money.rs b/src/itn/fr/money.rs similarity index 100% rename from src/asr/fr/money.rs rename to src/itn/fr/money.rs diff --git a/src/asr/fr/ordinal.rs b/src/itn/fr/ordinal.rs similarity index 100% rename from src/asr/fr/ordinal.rs rename to src/itn/fr/ordinal.rs diff --git a/src/asr/fr/punctuation.rs b/src/itn/fr/punctuation.rs similarity index 100% rename from src/asr/fr/punctuation.rs rename to src/itn/fr/punctuation.rs diff --git a/src/asr/fr/telephone.rs b/src/itn/fr/telephone.rs similarity index 100% rename from src/asr/fr/telephone.rs rename to src/itn/fr/telephone.rs diff --git a/src/asr/fr/time.rs b/src/itn/fr/time.rs similarity index 100% rename from src/asr/fr/time.rs rename to src/itn/fr/time.rs diff --git a/src/asr/fr/whitelist.rs b/src/itn/fr/whitelist.rs similarity index 100% rename from src/asr/fr/whitelist.rs rename to src/itn/fr/whitelist.rs diff --git a/src/asr/fr/word.rs b/src/itn/fr/word.rs similarity index 100% rename from src/asr/fr/word.rs rename to src/itn/fr/word.rs diff --git a/src/asr/hi/address.rs b/src/itn/hi/address.rs similarity index 100% rename from src/asr/hi/address.rs rename to src/itn/hi/address.rs diff --git a/src/asr/hi/cardinal.rs b/src/itn/hi/cardinal.rs similarity index 100% rename from src/asr/hi/cardinal.rs rename to src/itn/hi/cardinal.rs diff --git a/src/asr/hi/date.rs b/src/itn/hi/date.rs similarity index 100% rename from src/asr/hi/date.rs rename to src/itn/hi/date.rs diff --git a/src/asr/hi/decimal.rs b/src/itn/hi/decimal.rs similarity index 100% rename from src/asr/hi/decimal.rs rename to src/itn/hi/decimal.rs diff --git a/src/asr/hi/fraction.rs b/src/itn/hi/fraction.rs similarity index 100% rename from src/asr/hi/fraction.rs rename to src/itn/hi/fraction.rs diff --git a/src/asr/hi/measure.rs b/src/itn/hi/measure.rs similarity index 100% rename from src/asr/hi/measure.rs rename to src/itn/hi/measure.rs diff --git a/src/asr/hi/mod.rs b/src/itn/hi/mod.rs similarity index 100% rename from src/asr/hi/mod.rs rename to src/itn/hi/mod.rs diff --git a/src/asr/hi/money.rs b/src/itn/hi/money.rs similarity index 100% rename from src/asr/hi/money.rs rename to src/itn/hi/money.rs diff --git a/src/asr/hi/ordinal.rs b/src/itn/hi/ordinal.rs similarity index 100% rename from src/asr/hi/ordinal.rs rename to src/itn/hi/ordinal.rs diff --git a/src/asr/hi/telephone.rs b/src/itn/hi/telephone.rs similarity index 100% rename from src/asr/hi/telephone.rs rename to src/itn/hi/telephone.rs diff --git a/src/asr/hi/time.rs b/src/itn/hi/time.rs similarity index 100% rename from src/asr/hi/time.rs rename to src/itn/hi/time.rs diff --git a/src/asr/hi/whitelist.rs b/src/itn/hi/whitelist.rs similarity index 100% rename from src/asr/hi/whitelist.rs rename to src/itn/hi/whitelist.rs diff --git a/src/asr/hi/word.rs b/src/itn/hi/word.rs similarity index 100% rename from src/asr/hi/word.rs rename to src/itn/hi/word.rs diff --git a/src/asr/ja/cardinal.rs b/src/itn/ja/cardinal.rs similarity index 100% rename from src/asr/ja/cardinal.rs rename to src/itn/ja/cardinal.rs diff --git a/src/asr/ja/date.rs b/src/itn/ja/date.rs similarity index 100% rename from src/asr/ja/date.rs rename to src/itn/ja/date.rs diff --git a/src/asr/ja/decimal.rs b/src/itn/ja/decimal.rs similarity index 100% rename from src/asr/ja/decimal.rs rename to src/itn/ja/decimal.rs diff --git a/src/asr/ja/fraction.rs b/src/itn/ja/fraction.rs similarity index 100% rename from src/asr/ja/fraction.rs rename to src/itn/ja/fraction.rs diff --git a/src/asr/ja/mod.rs b/src/itn/ja/mod.rs similarity index 100% rename from src/asr/ja/mod.rs rename to src/itn/ja/mod.rs diff --git a/src/asr/ja/ordinal.rs b/src/itn/ja/ordinal.rs similarity index 100% rename from src/asr/ja/ordinal.rs rename to src/itn/ja/ordinal.rs diff --git a/src/asr/ja/time.rs b/src/itn/ja/time.rs similarity index 100% rename from src/asr/ja/time.rs rename to src/itn/ja/time.rs diff --git a/src/asr/mod.rs b/src/itn/mod.rs similarity index 100% rename from src/asr/mod.rs rename to src/itn/mod.rs diff --git a/src/asr/zh/cardinal.rs b/src/itn/zh/cardinal.rs similarity index 100% rename from src/asr/zh/cardinal.rs rename to src/itn/zh/cardinal.rs diff --git a/src/asr/zh/date.rs b/src/itn/zh/date.rs similarity index 100% rename from src/asr/zh/date.rs rename to src/itn/zh/date.rs diff --git a/src/asr/zh/decimal.rs b/src/itn/zh/decimal.rs similarity index 100% rename from src/asr/zh/decimal.rs rename to src/itn/zh/decimal.rs diff --git a/src/asr/zh/fraction.rs b/src/itn/zh/fraction.rs similarity index 100% rename from src/asr/zh/fraction.rs rename to src/itn/zh/fraction.rs diff --git a/src/asr/zh/mod.rs b/src/itn/zh/mod.rs similarity index 100% rename from src/asr/zh/mod.rs rename to src/itn/zh/mod.rs diff --git a/src/asr/zh/money.rs b/src/itn/zh/money.rs similarity index 100% rename from src/asr/zh/money.rs rename to src/itn/zh/money.rs diff --git a/src/asr/zh/ordinal.rs b/src/itn/zh/ordinal.rs similarity index 100% rename from src/asr/zh/ordinal.rs rename to src/itn/zh/ordinal.rs diff --git a/src/asr/zh/time.rs b/src/itn/zh/time.rs similarity index 100% rename from src/asr/zh/time.rs rename to src/itn/zh/time.rs diff --git a/src/asr/zh/whitelist.rs b/src/itn/zh/whitelist.rs similarity index 100% rename from src/asr/zh/whitelist.rs rename to src/itn/zh/whitelist.rs diff --git a/src/asr/zh/word.rs b/src/itn/zh/word.rs similarity index 100% rename from src/asr/zh/word.rs rename to src/itn/zh/word.rs diff --git a/src/lib.rs b/src/lib.rs index 18edb90..46a8119 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,14 +16,14 @@ //! assert_eq!(result, "200"); //! ``` -pub mod asr; +pub mod itn; pub mod custom_rules; -pub mod tts; +pub mod tn; #[cfg(feature = "ffi")] pub mod ffi; -use asr::en::{ +use itn::en::{ cardinal, date, decimal, electronic, measure, money, ordinal, punctuation, telephone, time, whitelist, word, }; @@ -178,41 +178,41 @@ fn try_fr_taggers(input: &str) -> Option { if let Some(result) = custom_rules::parse(input) { return Some(result); } - if let Some(result) = asr::fr::whitelist::parse(input) { + if let Some(result) = itn::fr::whitelist::parse(input) { return Some(result); } - if let Some(result) = asr::fr::punctuation::parse(input) { + if let Some(result) = itn::fr::punctuation::parse(input) { return Some(result); } - if let Some(result) = asr::fr::word::parse(input) { + if let Some(result) = itn::fr::word::parse(input) { return Some(result); } - if let Some(result) = asr::fr::time::parse(input) { + if let Some(result) = itn::fr::time::parse(input) { return Some(result); } - if let Some(result) = asr::fr::date::parse(input) { + if let Some(result) = itn::fr::date::parse(input) { return Some(result); } - if let Some(result) = asr::fr::money::parse(input) { + if let Some(result) = itn::fr::money::parse(input) { return Some(result); } - if let Some(result) = asr::fr::measure::parse(input) { + if let Some(result) = itn::fr::measure::parse(input) { return Some(result); } - if let Some(result) = asr::fr::electronic::parse(input) { + if let Some(result) = itn::fr::electronic::parse(input) { return Some(result); } - if let Some(result) = asr::fr::ordinal::parse(input) { + if let Some(result) = itn::fr::ordinal::parse(input) { return Some(result); } - if let Some(result) = asr::fr::decimal::parse(input) { + if let Some(result) = itn::fr::decimal::parse(input) { return Some(result); } - if let Some(num) = asr::fr::cardinal::parse(input) { + if let Some(num) = itn::fr::cardinal::parse(input) { return Some(num); } // Telephone last since it can match numbers - if let Some(result) = asr::fr::telephone::parse(input) { + if let Some(result) = itn::fr::telephone::parse(input) { return Some(result); } None @@ -229,7 +229,7 @@ fn try_fr_partial_cardinal(input: &str) -> Option { // Only convert the first token if it's a standalone number ≥ 10 let first = tokens[0]; let first_lower = first.to_lowercase(); - if let Some(num) = asr::fr::cardinal::words_to_number(&first_lower) { + if let Some(num) = itn::fr::cardinal::words_to_number(&first_lower) { if num >= 10 { return Some(format!("{} {}", num, tokens[1])); } @@ -263,41 +263,41 @@ fn try_de_taggers(input: &str) -> Option { if let Some(result) = custom_rules::parse(input) { return Some(result); } - if let Some(result) = asr::de::whitelist::parse(input) { + if let Some(result) = itn::de::whitelist::parse(input) { return Some(result); } - if let Some(result) = asr::de::punctuation::parse(input) { + if let Some(result) = itn::de::punctuation::parse(input) { return Some(result); } - if let Some(result) = asr::de::time::parse(input) { + if let Some(result) = itn::de::time::parse(input) { return Some(result); } - if let Some(result) = asr::de::date::parse(input) { + if let Some(result) = itn::de::date::parse(input) { return Some(result); } - if let Some(result) = asr::de::money::parse(input) { + if let Some(result) = itn::de::money::parse(input) { return Some(result); } - if let Some(result) = asr::de::measure::parse(input) { + if let Some(result) = itn::de::measure::parse(input) { return Some(result); } - if let Some(result) = asr::de::electronic::parse(input) { + if let Some(result) = itn::de::electronic::parse(input) { return Some(result); } - if let Some(result) = asr::de::ordinal::parse(input) { + if let Some(result) = itn::de::ordinal::parse(input) { return Some(result); } - if let Some(result) = asr::de::fraction::parse(input) { + if let Some(result) = itn::de::fraction::parse(input) { return Some(result); } - if let Some(result) = asr::de::decimal::parse(input) { + if let Some(result) = itn::de::decimal::parse(input) { return Some(result); } - if let Some(num) = asr::de::cardinal::parse(input) { + if let Some(num) = itn::de::cardinal::parse(input) { return Some(num); } // Telephone last since it can match digit sequences - if let Some(result) = asr::de::telephone::parse(input) { + if let Some(result) = itn::de::telephone::parse(input) { return Some(result); } None @@ -328,44 +328,44 @@ fn try_es_taggers(input: &str) -> Option { if let Some(result) = custom_rules::parse(input) { return Some(result); } - if let Some(result) = asr::es::whitelist::parse(input) { + if let Some(result) = itn::es::whitelist::parse(input) { return Some(result); } - if let Some(result) = asr::es::punctuation::parse(input) { + if let Some(result) = itn::es::punctuation::parse(input) { return Some(result); } - if let Some(result) = asr::es::word::parse(input) { + if let Some(result) = itn::es::word::parse(input) { return Some(result); } - if let Some(result) = asr::es::time::parse(input) { + if let Some(result) = itn::es::time::parse(input) { return Some(result); } - if let Some(result) = asr::es::date::parse(input) { + if let Some(result) = itn::es::date::parse(input) { return Some(result); } - if let Some(result) = asr::es::money::parse(input) { + if let Some(result) = itn::es::money::parse(input) { return Some(result); } - if let Some(result) = asr::es::measure::parse(input) { + if let Some(result) = itn::es::measure::parse(input) { return Some(result); } - if let Some(result) = asr::es::electronic::parse(input) { + if let Some(result) = itn::es::electronic::parse(input) { return Some(result); } - if let Some(result) = asr::es::ordinal::parse(input) { + if let Some(result) = itn::es::ordinal::parse(input) { return Some(result); } - if let Some(result) = asr::es::fraction::parse(input) { + if let Some(result) = itn::es::fraction::parse(input) { return Some(result); } - if let Some(result) = asr::es::decimal::parse(input) { + if let Some(result) = itn::es::decimal::parse(input) { return Some(result); } - if let Some(num) = asr::es::cardinal::parse(input) { + if let Some(num) = itn::es::cardinal::parse(input) { return Some(num); } // Telephone last since it can match digit sequences - if let Some(result) = asr::es::telephone::parse(input) { + if let Some(result) = itn::es::telephone::parse(input) { return Some(result); } None @@ -427,40 +427,40 @@ fn normalize_lang_hi(input: &str) -> String { let mut result = input; // 1. Whitelist (abbreviations: डॉक्टर→डॉ., etc.) - result = asr::hi::whitelist::process(&result); + result = itn::hi::whitelist::process(&result); // 2. Money (number + currency name → symbol + digits) - result = asr::hi::money::process(&result); + result = itn::hi::money::process(&result); // 3. Date (day + month [+ year], ranges, eras) - result = asr::hi::date::process(&result); + result = itn::hi::date::process(&result); // 4. Time (X बजे/घंटा + मिनट/सेकंड) // Before measure so "X घंटा Y मिनट" isn't caught as measure - result = asr::hi::time::process(&result); + result = itn::hi::time::process(&result); // 5. Measure (number + unit → digits + symbol) - result = asr::hi::measure::process(&result); + result = itn::hi::measure::process(&result); // 6. Fractions (X बटा Y, X सही Y बटा Z) - result = asr::hi::fraction::process(&result); + result = itn::hi::fraction::process(&result); // 7. Ordinal (Xवां, Xवीं, Xवें) - result = asr::hi::ordinal::process(&result); + result = itn::hi::ordinal::process(&result); // 8. Decimal (X दशमलव Y) - result = asr::hi::decimal::process(&result); + result = itn::hi::decimal::process(&result); // 9. Cardinal — convert compound number words (with scale words) and // single number words to Devanagari digits. Must run BEFORE // telephone/address so compound numbers like "एक सौ" are grouped. - result = asr::hi::cardinal::process(&result); + result = itn::hi::cardinal::process(&result); // 10. Telephone (digit-by-digit sequences ≥ 4 Devanagari digits) - result = asr::hi::telephone::process(&result); + result = itn::hi::telephone::process(&result); // 11. Address (digit-by-digit with हाइफ़न/बटा, comma-separated digits) - result = asr::hi::address::process(&result); + result = itn::hi::address::process(&result); result } @@ -477,22 +477,22 @@ fn normalize_lang_ja(input: &str) -> String { let mut result = input.to_string(); // 1. Fractions first (X分のY) — before time which also uses 分 - result = asr::ja::fraction::process(&result); + result = itn::ja::fraction::process(&result); // 2. Decimals (X点Y) — before cardinal swallows the kanji - result = asr::ja::decimal::process(&result); + result = itn::ja::decimal::process(&result); // 3. Dates (年月日, 世紀, 年代, weekdays, ranges) - result = asr::ja::date::process(&result); + result = itn::ja::date::process(&result); // 4. Time (時, 分) — after fractions to avoid 分の collision - result = asr::ja::time::process(&result); + result = itn::ja::time::process(&result); // 5. Ordinals (番目, 第) - result = asr::ja::ordinal::process(&result); + result = itn::ja::ordinal::process(&result); // 6. Cardinal — catch remaining standalone kanji number spans - result = asr::ja::cardinal::replace_kanji_numbers(&result); + result = itn::ja::cardinal::replace_kanji_numbers(&result); result } @@ -509,28 +509,28 @@ fn normalize_lang_zh(input: &str) -> String { let mut result = input.to_string(); // 1. Whitelist (abbreviation mappings) - result = asr::zh::whitelist::process(&result); + result = itn::zh::whitelist::process(&result); // 2. Money (before decimal to catch currency-specific decimal patterns like 一点五万美元) - result = asr::zh::money::process(&result); + result = itn::zh::money::process(&result); // 3. Fractions (X分之Y) — before time which also uses 分 - result = asr::zh::fraction::process(&result); + result = itn::zh::fraction::process(&result); // 4. Time (X点Y分, X分钟, X秒钟) — before decimal so 点 with 分/刻/半 isn't consumed as decimal - result = asr::zh::time::process(&result); + result = itn::zh::time::process(&result); // 5. Decimals (X点Y) - result = asr::zh::decimal::process(&result); + result = itn::zh::decimal::process(&result); // 6. Dates (年月日, 公元/纪元) - result = asr::zh::date::process(&result); + result = itn::zh::date::process(&result); // 7. Ordinals (第X) - result = asr::zh::ordinal::process(&result); + result = itn::zh::ordinal::process(&result); // 8. Cardinal — catch remaining standalone Chinese number spans - result = asr::zh::cardinal::replace_zh_numbers(&result); + result = itn::zh::cardinal::replace_zh_numbers(&result); result } @@ -556,204 +556,204 @@ fn tn_normalize_for_lang(input: &str, lang: &str) -> String { } fn tn_normalize_lang_fr(input: &str) -> String { - if let Some(r) = tts::fr::whitelist::parse(input) { + if let Some(r) = tn::fr::whitelist::parse(input) { return r; } - if let Some(r) = tts::fr::money::parse(input) { + if let Some(r) = tn::fr::money::parse(input) { return r; } - if let Some(r) = tts::fr::measure::parse(input) { + if let Some(r) = tn::fr::measure::parse(input) { return r; } - if let Some(r) = tts::fr::date::parse(input) { + if let Some(r) = tn::fr::date::parse(input) { return r; } - if let Some(r) = tts::fr::time::parse(input) { + if let Some(r) = tn::fr::time::parse(input) { return r; } - if let Some(r) = tts::fr::electronic::parse(input) { + if let Some(r) = tn::fr::electronic::parse(input) { return r; } - if let Some(r) = tts::fr::telephone::parse(input) { + if let Some(r) = tn::fr::telephone::parse(input) { return r; } - if let Some(r) = tts::fr::ordinal::parse(input) { + if let Some(r) = tn::fr::ordinal::parse(input) { return r; } - if let Some(r) = tts::fr::decimal::parse(input) { + if let Some(r) = tn::fr::decimal::parse(input) { return r; } - if let Some(r) = tts::fr::cardinal::parse(input) { + if let Some(r) = tn::fr::cardinal::parse(input) { return r; } input.to_string() } fn tn_normalize_lang_es(input: &str) -> String { - if let Some(r) = tts::es::whitelist::parse(input) { + if let Some(r) = tn::es::whitelist::parse(input) { return r; } - if let Some(r) = tts::es::money::parse(input) { + if let Some(r) = tn::es::money::parse(input) { return r; } - if let Some(r) = tts::es::measure::parse(input) { + if let Some(r) = tn::es::measure::parse(input) { return r; } - if let Some(r) = tts::es::date::parse(input) { + if let Some(r) = tn::es::date::parse(input) { return r; } - if let Some(r) = tts::es::time::parse(input) { + if let Some(r) = tn::es::time::parse(input) { return r; } - if let Some(r) = tts::es::electronic::parse(input) { + if let Some(r) = tn::es::electronic::parse(input) { return r; } - if let Some(r) = tts::es::telephone::parse(input) { + if let Some(r) = tn::es::telephone::parse(input) { return r; } - if let Some(r) = tts::es::ordinal::parse(input) { + if let Some(r) = tn::es::ordinal::parse(input) { return r; } - if let Some(r) = tts::es::decimal::parse(input) { + if let Some(r) = tn::es::decimal::parse(input) { return r; } - if let Some(r) = tts::es::cardinal::parse(input) { + if let Some(r) = tn::es::cardinal::parse(input) { return r; } input.to_string() } fn tn_normalize_lang_de(input: &str) -> String { - if let Some(r) = tts::de::whitelist::parse(input) { + if let Some(r) = tn::de::whitelist::parse(input) { return r; } - if let Some(r) = tts::de::money::parse(input) { + if let Some(r) = tn::de::money::parse(input) { return r; } - if let Some(r) = tts::de::measure::parse(input) { + if let Some(r) = tn::de::measure::parse(input) { return r; } - if let Some(r) = tts::de::date::parse(input) { + if let Some(r) = tn::de::date::parse(input) { return r; } - if let Some(r) = tts::de::time::parse(input) { + if let Some(r) = tn::de::time::parse(input) { return r; } - if let Some(r) = tts::de::electronic::parse(input) { + if let Some(r) = tn::de::electronic::parse(input) { return r; } - if let Some(r) = tts::de::telephone::parse(input) { + if let Some(r) = tn::de::telephone::parse(input) { return r; } - if let Some(r) = tts::de::ordinal::parse(input) { + if let Some(r) = tn::de::ordinal::parse(input) { return r; } - if let Some(r) = tts::de::decimal::parse(input) { + if let Some(r) = tn::de::decimal::parse(input) { return r; } - if let Some(r) = tts::de::cardinal::parse(input) { + if let Some(r) = tn::de::cardinal::parse(input) { return r; } input.to_string() } fn tn_normalize_lang_zh(input: &str) -> String { - if let Some(r) = tts::zh::whitelist::parse(input) { + if let Some(r) = tn::zh::whitelist::parse(input) { return r; } - if let Some(r) = tts::zh::money::parse(input) { + if let Some(r) = tn::zh::money::parse(input) { return r; } - if let Some(r) = tts::zh::measure::parse(input) { + if let Some(r) = tn::zh::measure::parse(input) { return r; } - if let Some(r) = tts::zh::date::parse(input) { + if let Some(r) = tn::zh::date::parse(input) { return r; } - if let Some(r) = tts::zh::time::parse(input) { + if let Some(r) = tn::zh::time::parse(input) { return r; } - if let Some(r) = tts::zh::electronic::parse(input) { + if let Some(r) = tn::zh::electronic::parse(input) { return r; } - if let Some(r) = tts::zh::telephone::parse(input) { + if let Some(r) = tn::zh::telephone::parse(input) { return r; } - if let Some(r) = tts::zh::ordinal::parse(input) { + if let Some(r) = tn::zh::ordinal::parse(input) { return r; } - if let Some(r) = tts::zh::decimal::parse(input) { + if let Some(r) = tn::zh::decimal::parse(input) { return r; } - if let Some(r) = tts::zh::cardinal::parse(input) { + if let Some(r) = tn::zh::cardinal::parse(input) { return r; } input.to_string() } fn tn_normalize_lang_hi(input: &str) -> String { - if let Some(r) = tts::hi::whitelist::parse(input) { + if let Some(r) = tn::hi::whitelist::parse(input) { return r; } - if let Some(r) = tts::hi::money::parse(input) { + if let Some(r) = tn::hi::money::parse(input) { return r; } - if let Some(r) = tts::hi::measure::parse(input) { + if let Some(r) = tn::hi::measure::parse(input) { return r; } - if let Some(r) = tts::hi::date::parse(input) { + if let Some(r) = tn::hi::date::parse(input) { return r; } - if let Some(r) = tts::hi::time::parse(input) { + if let Some(r) = tn::hi::time::parse(input) { return r; } - if let Some(r) = tts::hi::electronic::parse(input) { + if let Some(r) = tn::hi::electronic::parse(input) { return r; } - if let Some(r) = tts::hi::telephone::parse(input) { + if let Some(r) = tn::hi::telephone::parse(input) { return r; } - if let Some(r) = tts::hi::ordinal::parse(input) { + if let Some(r) = tn::hi::ordinal::parse(input) { return r; } - if let Some(r) = tts::hi::decimal::parse(input) { + if let Some(r) = tn::hi::decimal::parse(input) { return r; } - if let Some(r) = tts::hi::cardinal::parse(input) { + if let Some(r) = tn::hi::cardinal::parse(input) { return r; } input.to_string() } fn tn_normalize_lang_ja(input: &str) -> String { - if let Some(r) = tts::ja::whitelist::parse(input) { + if let Some(r) = tn::ja::whitelist::parse(input) { return r; } - if let Some(r) = tts::ja::money::parse(input) { + if let Some(r) = tn::ja::money::parse(input) { return r; } - if let Some(r) = tts::ja::measure::parse(input) { + if let Some(r) = tn::ja::measure::parse(input) { return r; } - if let Some(r) = tts::ja::date::parse(input) { + if let Some(r) = tn::ja::date::parse(input) { return r; } - if let Some(r) = tts::ja::time::parse(input) { + if let Some(r) = tn::ja::time::parse(input) { return r; } - if let Some(r) = tts::ja::electronic::parse(input) { + if let Some(r) = tn::ja::electronic::parse(input) { return r; } - if let Some(r) = tts::ja::telephone::parse(input) { + if let Some(r) = tn::ja::telephone::parse(input) { return r; } - if let Some(r) = tts::ja::ordinal::parse(input) { + if let Some(r) = tn::ja::ordinal::parse(input) { return r; } - if let Some(r) = tts::ja::decimal::parse(input) { + if let Some(r) = tn::ja::decimal::parse(input) { return r; } - if let Some(r) = tts::ja::cardinal::parse(input) { + if let Some(r) = tn::ja::cardinal::parse(input) { return r; } input.to_string() @@ -803,25 +803,25 @@ fn tn_parse_span_lang(span: &str, lang: &str) -> Option<(String, u8)> { match lang { "en" => { - try_lang_taggers!(tts::en); + try_lang_taggers!(tn::en); } "fr" => { - try_lang_taggers!(tts::fr); + try_lang_taggers!(tn::fr); } "es" => { - try_lang_taggers!(tts::es); + try_lang_taggers!(tn::es); } "de" => { - try_lang_taggers!(tts::de); + try_lang_taggers!(tn::de); } "zh" => { - try_lang_taggers!(tts::zh); + try_lang_taggers!(tn::zh); } "hi" => { - try_lang_taggers!(tts::hi); + try_lang_taggers!(tn::hi); } "ja" => { - try_lang_taggers!(tts::ja); + try_lang_taggers!(tn::ja); } _ => { return tn_parse_span(span); @@ -993,34 +993,34 @@ pub fn normalize_sentence_with_max_span(input: &str, max_span_tokens: usize) -> pub fn tn_normalize(input: &str) -> String { let input = input.trim(); - if let Some(result) = tts::en::whitelist::parse(input) { + if let Some(result) = tn::en::whitelist::parse(input) { return result; } - if let Some(result) = tts::en::money::parse(input) { + if let Some(result) = tn::en::money::parse(input) { return result; } - if let Some(result) = tts::en::measure::parse(input) { + if let Some(result) = tn::en::measure::parse(input) { return result; } - if let Some(result) = tts::en::date::parse(input) { + if let Some(result) = tn::en::date::parse(input) { return result; } - if let Some(result) = tts::en::time::parse(input) { + if let Some(result) = tn::en::time::parse(input) { return result; } - if let Some(result) = tts::en::electronic::parse(input) { + if let Some(result) = tn::en::electronic::parse(input) { return result; } - if let Some(result) = tts::en::telephone::parse(input) { + if let Some(result) = tn::en::telephone::parse(input) { return result; } - if let Some(result) = tts::en::ordinal::parse(input) { + if let Some(result) = tn::en::ordinal::parse(input) { return result; } - if let Some(result) = tts::en::decimal::parse(input) { + if let Some(result) = tn::en::decimal::parse(input) { return result; } - if let Some(result) = tts::en::cardinal::parse(input) { + if let Some(result) = tn::en::cardinal::parse(input) { return result; } @@ -1035,34 +1035,34 @@ fn tn_parse_span(span: &str) -> Option<(String, u8)> { return None; } - if let Some(result) = tts::en::whitelist::parse(span) { + if let Some(result) = tn::en::whitelist::parse(span) { return Some((result, 100)); } - if let Some(result) = tts::en::money::parse(span) { + if let Some(result) = tn::en::money::parse(span) { return Some((result, 95)); } - if let Some(result) = tts::en::measure::parse(span) { + if let Some(result) = tn::en::measure::parse(span) { return Some((result, 90)); } - if let Some(result) = tts::en::date::parse(span) { + if let Some(result) = tn::en::date::parse(span) { return Some((result, 88)); } - if let Some(result) = tts::en::time::parse(span) { + if let Some(result) = tn::en::time::parse(span) { return Some((result, 85)); } - if let Some(result) = tts::en::electronic::parse(span) { + if let Some(result) = tn::en::electronic::parse(span) { return Some((result, 82)); } - if let Some(result) = tts::en::telephone::parse(span) { + if let Some(result) = tn::en::telephone::parse(span) { return Some((result, 78)); } - if let Some(result) = tts::en::ordinal::parse(span) { + if let Some(result) = tn::en::ordinal::parse(span) { return Some((result, 75)); } - if let Some(result) = tts::en::decimal::parse(span) { + if let Some(result) = tn::en::decimal::parse(span) { return Some((result, 73)); } - if let Some(result) = tts::en::cardinal::parse(span) { + if let Some(result) = tn::en::cardinal::parse(span) { return Some((result, 70)); } diff --git a/src/tts/de/cardinal.rs b/src/tn/de/cardinal.rs similarity index 100% rename from src/tts/de/cardinal.rs rename to src/tn/de/cardinal.rs diff --git a/src/tts/de/date.rs b/src/tn/de/date.rs similarity index 100% rename from src/tts/de/date.rs rename to src/tn/de/date.rs diff --git a/src/tts/de/decimal.rs b/src/tn/de/decimal.rs similarity index 100% rename from src/tts/de/decimal.rs rename to src/tn/de/decimal.rs diff --git a/src/tts/de/electronic.rs b/src/tn/de/electronic.rs similarity index 100% rename from src/tts/de/electronic.rs rename to src/tn/de/electronic.rs diff --git a/src/tts/de/measure.rs b/src/tn/de/measure.rs similarity index 100% rename from src/tts/de/measure.rs rename to src/tn/de/measure.rs diff --git a/src/tts/de/mod.rs b/src/tn/de/mod.rs similarity index 100% rename from src/tts/de/mod.rs rename to src/tn/de/mod.rs diff --git a/src/tts/de/money.rs b/src/tn/de/money.rs similarity index 100% rename from src/tts/de/money.rs rename to src/tn/de/money.rs diff --git a/src/tts/de/ordinal.rs b/src/tn/de/ordinal.rs similarity index 100% rename from src/tts/de/ordinal.rs rename to src/tn/de/ordinal.rs diff --git a/src/tts/de/telephone.rs b/src/tn/de/telephone.rs similarity index 100% rename from src/tts/de/telephone.rs rename to src/tn/de/telephone.rs diff --git a/src/tts/de/time.rs b/src/tn/de/time.rs similarity index 100% rename from src/tts/de/time.rs rename to src/tn/de/time.rs diff --git a/src/tts/de/whitelist.rs b/src/tn/de/whitelist.rs similarity index 100% rename from src/tts/de/whitelist.rs rename to src/tn/de/whitelist.rs diff --git a/src/tts/en/cardinal.rs b/src/tn/en/cardinal.rs similarity index 100% rename from src/tts/en/cardinal.rs rename to src/tn/en/cardinal.rs diff --git a/src/tts/en/date.rs b/src/tn/en/date.rs similarity index 100% rename from src/tts/en/date.rs rename to src/tn/en/date.rs diff --git a/src/tts/en/decimal.rs b/src/tn/en/decimal.rs similarity index 100% rename from src/tts/en/decimal.rs rename to src/tn/en/decimal.rs diff --git a/src/tts/en/electronic.rs b/src/tn/en/electronic.rs similarity index 100% rename from src/tts/en/electronic.rs rename to src/tn/en/electronic.rs diff --git a/src/tts/en/measure.rs b/src/tn/en/measure.rs similarity index 100% rename from src/tts/en/measure.rs rename to src/tn/en/measure.rs diff --git a/src/tts/en/mod.rs b/src/tn/en/mod.rs similarity index 100% rename from src/tts/en/mod.rs rename to src/tn/en/mod.rs diff --git a/src/tts/en/money.rs b/src/tn/en/money.rs similarity index 100% rename from src/tts/en/money.rs rename to src/tn/en/money.rs diff --git a/src/tts/en/ordinal.rs b/src/tn/en/ordinal.rs similarity index 100% rename from src/tts/en/ordinal.rs rename to src/tn/en/ordinal.rs diff --git a/src/tts/en/telephone.rs b/src/tn/en/telephone.rs similarity index 100% rename from src/tts/en/telephone.rs rename to src/tn/en/telephone.rs diff --git a/src/tts/en/time.rs b/src/tn/en/time.rs similarity index 100% rename from src/tts/en/time.rs rename to src/tn/en/time.rs diff --git a/src/tts/en/whitelist.rs b/src/tn/en/whitelist.rs similarity index 100% rename from src/tts/en/whitelist.rs rename to src/tn/en/whitelist.rs diff --git a/src/tts/es/cardinal.rs b/src/tn/es/cardinal.rs similarity index 100% rename from src/tts/es/cardinal.rs rename to src/tn/es/cardinal.rs diff --git a/src/tts/es/date.rs b/src/tn/es/date.rs similarity index 100% rename from src/tts/es/date.rs rename to src/tn/es/date.rs diff --git a/src/tts/es/decimal.rs b/src/tn/es/decimal.rs similarity index 100% rename from src/tts/es/decimal.rs rename to src/tn/es/decimal.rs diff --git a/src/tts/es/electronic.rs b/src/tn/es/electronic.rs similarity index 100% rename from src/tts/es/electronic.rs rename to src/tn/es/electronic.rs diff --git a/src/tts/es/measure.rs b/src/tn/es/measure.rs similarity index 100% rename from src/tts/es/measure.rs rename to src/tn/es/measure.rs diff --git a/src/tts/es/mod.rs b/src/tn/es/mod.rs similarity index 100% rename from src/tts/es/mod.rs rename to src/tn/es/mod.rs diff --git a/src/tts/es/money.rs b/src/tn/es/money.rs similarity index 100% rename from src/tts/es/money.rs rename to src/tn/es/money.rs diff --git a/src/tts/es/ordinal.rs b/src/tn/es/ordinal.rs similarity index 100% rename from src/tts/es/ordinal.rs rename to src/tn/es/ordinal.rs diff --git a/src/tts/es/telephone.rs b/src/tn/es/telephone.rs similarity index 100% rename from src/tts/es/telephone.rs rename to src/tn/es/telephone.rs diff --git a/src/tts/es/time.rs b/src/tn/es/time.rs similarity index 100% rename from src/tts/es/time.rs rename to src/tn/es/time.rs diff --git a/src/tts/es/whitelist.rs b/src/tn/es/whitelist.rs similarity index 100% rename from src/tts/es/whitelist.rs rename to src/tn/es/whitelist.rs diff --git a/src/tts/fr/cardinal.rs b/src/tn/fr/cardinal.rs similarity index 100% rename from src/tts/fr/cardinal.rs rename to src/tn/fr/cardinal.rs diff --git a/src/tts/fr/date.rs b/src/tn/fr/date.rs similarity index 100% rename from src/tts/fr/date.rs rename to src/tn/fr/date.rs diff --git a/src/tts/fr/decimal.rs b/src/tn/fr/decimal.rs similarity index 100% rename from src/tts/fr/decimal.rs rename to src/tn/fr/decimal.rs diff --git a/src/tts/fr/electronic.rs b/src/tn/fr/electronic.rs similarity index 100% rename from src/tts/fr/electronic.rs rename to src/tn/fr/electronic.rs diff --git a/src/tts/fr/measure.rs b/src/tn/fr/measure.rs similarity index 100% rename from src/tts/fr/measure.rs rename to src/tn/fr/measure.rs diff --git a/src/tts/fr/mod.rs b/src/tn/fr/mod.rs similarity index 100% rename from src/tts/fr/mod.rs rename to src/tn/fr/mod.rs diff --git a/src/tts/fr/money.rs b/src/tn/fr/money.rs similarity index 100% rename from src/tts/fr/money.rs rename to src/tn/fr/money.rs diff --git a/src/tts/fr/ordinal.rs b/src/tn/fr/ordinal.rs similarity index 100% rename from src/tts/fr/ordinal.rs rename to src/tn/fr/ordinal.rs diff --git a/src/tts/fr/telephone.rs b/src/tn/fr/telephone.rs similarity index 100% rename from src/tts/fr/telephone.rs rename to src/tn/fr/telephone.rs diff --git a/src/tts/fr/time.rs b/src/tn/fr/time.rs similarity index 100% rename from src/tts/fr/time.rs rename to src/tn/fr/time.rs diff --git a/src/tts/fr/whitelist.rs b/src/tn/fr/whitelist.rs similarity index 100% rename from src/tts/fr/whitelist.rs rename to src/tn/fr/whitelist.rs diff --git a/src/tts/hi/cardinal.rs b/src/tn/hi/cardinal.rs similarity index 100% rename from src/tts/hi/cardinal.rs rename to src/tn/hi/cardinal.rs diff --git a/src/tts/hi/date.rs b/src/tn/hi/date.rs similarity index 100% rename from src/tts/hi/date.rs rename to src/tn/hi/date.rs diff --git a/src/tts/hi/decimal.rs b/src/tn/hi/decimal.rs similarity index 100% rename from src/tts/hi/decimal.rs rename to src/tn/hi/decimal.rs diff --git a/src/tts/hi/electronic.rs b/src/tn/hi/electronic.rs similarity index 100% rename from src/tts/hi/electronic.rs rename to src/tn/hi/electronic.rs diff --git a/src/tts/hi/measure.rs b/src/tn/hi/measure.rs similarity index 100% rename from src/tts/hi/measure.rs rename to src/tn/hi/measure.rs diff --git a/src/tts/hi/mod.rs b/src/tn/hi/mod.rs similarity index 100% rename from src/tts/hi/mod.rs rename to src/tn/hi/mod.rs diff --git a/src/tts/hi/money.rs b/src/tn/hi/money.rs similarity index 100% rename from src/tts/hi/money.rs rename to src/tn/hi/money.rs diff --git a/src/tts/hi/ordinal.rs b/src/tn/hi/ordinal.rs similarity index 100% rename from src/tts/hi/ordinal.rs rename to src/tn/hi/ordinal.rs diff --git a/src/tts/hi/telephone.rs b/src/tn/hi/telephone.rs similarity index 100% rename from src/tts/hi/telephone.rs rename to src/tn/hi/telephone.rs diff --git a/src/tts/hi/time.rs b/src/tn/hi/time.rs similarity index 100% rename from src/tts/hi/time.rs rename to src/tn/hi/time.rs diff --git a/src/tts/hi/whitelist.rs b/src/tn/hi/whitelist.rs similarity index 100% rename from src/tts/hi/whitelist.rs rename to src/tn/hi/whitelist.rs diff --git a/src/tts/ja/cardinal.rs b/src/tn/ja/cardinal.rs similarity index 100% rename from src/tts/ja/cardinal.rs rename to src/tn/ja/cardinal.rs diff --git a/src/tts/ja/date.rs b/src/tn/ja/date.rs similarity index 100% rename from src/tts/ja/date.rs rename to src/tn/ja/date.rs diff --git a/src/tts/ja/decimal.rs b/src/tn/ja/decimal.rs similarity index 100% rename from src/tts/ja/decimal.rs rename to src/tn/ja/decimal.rs diff --git a/src/tts/ja/electronic.rs b/src/tn/ja/electronic.rs similarity index 100% rename from src/tts/ja/electronic.rs rename to src/tn/ja/electronic.rs diff --git a/src/tts/ja/measure.rs b/src/tn/ja/measure.rs similarity index 100% rename from src/tts/ja/measure.rs rename to src/tn/ja/measure.rs diff --git a/src/tts/ja/mod.rs b/src/tn/ja/mod.rs similarity index 100% rename from src/tts/ja/mod.rs rename to src/tn/ja/mod.rs diff --git a/src/tts/ja/money.rs b/src/tn/ja/money.rs similarity index 100% rename from src/tts/ja/money.rs rename to src/tn/ja/money.rs diff --git a/src/tts/ja/ordinal.rs b/src/tn/ja/ordinal.rs similarity index 100% rename from src/tts/ja/ordinal.rs rename to src/tn/ja/ordinal.rs diff --git a/src/tts/ja/telephone.rs b/src/tn/ja/telephone.rs similarity index 100% rename from src/tts/ja/telephone.rs rename to src/tn/ja/telephone.rs diff --git a/src/tts/ja/time.rs b/src/tn/ja/time.rs similarity index 100% rename from src/tts/ja/time.rs rename to src/tn/ja/time.rs diff --git a/src/tts/ja/whitelist.rs b/src/tn/ja/whitelist.rs similarity index 100% rename from src/tts/ja/whitelist.rs rename to src/tn/ja/whitelist.rs diff --git a/src/tts/mod.rs b/src/tn/mod.rs similarity index 100% rename from src/tts/mod.rs rename to src/tn/mod.rs diff --git a/src/tts/zh/cardinal.rs b/src/tn/zh/cardinal.rs similarity index 100% rename from src/tts/zh/cardinal.rs rename to src/tn/zh/cardinal.rs diff --git a/src/tts/zh/date.rs b/src/tn/zh/date.rs similarity index 100% rename from src/tts/zh/date.rs rename to src/tn/zh/date.rs diff --git a/src/tts/zh/decimal.rs b/src/tn/zh/decimal.rs similarity index 100% rename from src/tts/zh/decimal.rs rename to src/tn/zh/decimal.rs diff --git a/src/tts/zh/electronic.rs b/src/tn/zh/electronic.rs similarity index 100% rename from src/tts/zh/electronic.rs rename to src/tn/zh/electronic.rs diff --git a/src/tts/zh/measure.rs b/src/tn/zh/measure.rs similarity index 100% rename from src/tts/zh/measure.rs rename to src/tn/zh/measure.rs diff --git a/src/tts/zh/mod.rs b/src/tn/zh/mod.rs similarity index 100% rename from src/tts/zh/mod.rs rename to src/tn/zh/mod.rs diff --git a/src/tts/zh/money.rs b/src/tn/zh/money.rs similarity index 100% rename from src/tts/zh/money.rs rename to src/tn/zh/money.rs diff --git a/src/tts/zh/ordinal.rs b/src/tn/zh/ordinal.rs similarity index 100% rename from src/tts/zh/ordinal.rs rename to src/tn/zh/ordinal.rs diff --git a/src/tts/zh/telephone.rs b/src/tn/zh/telephone.rs similarity index 100% rename from src/tts/zh/telephone.rs rename to src/tn/zh/telephone.rs diff --git a/src/tts/zh/time.rs b/src/tn/zh/time.rs similarity index 100% rename from src/tts/zh/time.rs rename to src/tn/zh/time.rs diff --git a/src/tts/zh/whitelist.rs b/src/tn/zh/whitelist.rs similarity index 100% rename from src/tts/zh/whitelist.rs rename to src/tn/zh/whitelist.rs diff --git a/tests/extensive_tests.rs b/tests/extensive_tests.rs index fb89620..c369cfc 100644 --- a/tests/extensive_tests.rs +++ b/tests/extensive_tests.rs @@ -1453,7 +1453,7 @@ fn test_number_to_words_i64_min() { // through the telephone tagger (the "-" is treated as a separator). // i64::MIN = -9223372036854775808: negating overflows i64 but our fix // uses wrapping_neg + u64 to handle it safely. - use text_processing_rs::tts::en::number_to_words; + use text_processing_rs::tn::en::number_to_words; let result = number_to_words(i64::MIN); assert!( From 516bf7670aa5518bd2198047f76f248fb97dca91 Mon Sep 17 00:00:00 2001 From: Alex-Wengg Date: Thu, 12 Mar 2026 22:54:30 -0400 Subject: [PATCH 2/2] style: cargo fmt --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 46a8119..493997a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,8 +16,8 @@ //! assert_eq!(result, "200"); //! ``` -pub mod itn; pub mod custom_rules; +pub mod itn; pub mod tn; #[cfg(feature = "ffi")]