ferrocat_icu/lib.rs
1#![warn(missing_docs, rustdoc::broken_intra_doc_links)]
2//! Compact, performance-oriented ICU `MessageFormat` parsing primitives.
3//!
4//! # Examples
5//!
6//! ```rust
7//! use ferrocat_icu::{extract_variables, parse_icu};
8//!
9//! let message = parse_icu("Hello {name}, you have {count, plural, one {# item} other {# items}}.")?;
10//! assert_eq!(extract_variables(&message), vec!["name", "count"]);
11//! # Ok::<(), ferrocat_icu::IcuParseError>(())
12//! ```
13
14mod ast;
15mod error;
16mod parser;
17mod utils;
18
19pub use ast::{IcuMessage, IcuNode, IcuOption, IcuPluralKind};
20pub use error::{IcuErrorKind, IcuParseError, IcuPosition};
21pub use parser::{IcuParserOptions, parse_icu, parse_icu_with_options};
22pub use utils::{
23 extract_variables, has_plural, has_select, has_selectordinal, has_tag, validate_icu,
24};