normalizer_tr/lib.rs
1//! A local, synchronous Turkish text-to-speech normalizer.
2//!
3//! The default preserves unresolved spans and reports them. Use
4//! [`AmbiguityPolicy::Reject`] when partial speech is not acceptable.
5//! Original source ranges are UTF-8 byte coordinates, not character indices.
6//!
7//! ```
8//! use normalizer_tr::{Normalizer, NormalizeOptions};
9//! let normalizer = Normalizer::new()?;
10//! let result = normalizer.normalize("25 TL", &NormalizeOptions::default())?;
11//! assert_eq!(result.normalized_text(), "yirmi beş Türk lirası");
12//! assert!(result.complete());
13//! # Ok::<(), normalizer_tr::NormalizeError>(())
14//! ```
15#![forbid(unsafe_code)]
16#![doc = include_str!("../README.md")]
17
18mod api;
19mod classify;
20mod domain;
21mod model;
22mod morphology;
23mod normalizer;
24mod numerals;
25mod pipeline;
26mod resources;
27mod source_map;
28mod verbalize;
29
30pub use api::{
31 AmbiguityPolicy, Hint, HintKind, Issue, IssueCategory, LimitKind, NormalizeError,
32 NormalizeOptions, NormalizeResult, Segment, SegmentKind, SourceRange, WorkControl,
33};
34pub use normalizer::Normalizer;
35pub use resources::NORMALIZER_ID;
36
37/// Maximum original UTF-8 input length in bytes.
38pub const MAX_INPUT_BYTES: usize = 32 * 1024;
39/// Maximum number of caller hints.
40pub const MAX_HINTS: usize = 256;
41/// Maximum number of semiotic candidate records, including unresolved spans.
42pub const MAX_CANDIDATES: usize = 4096;
43/// Maximum logical bytes of owned result and diagnostic allocations.
44pub const MAX_RESULT_BYTES: usize = 512 * 1024;