unicode_case_mapping/
lib.rs

1//! Map a character to its lowercase, uppercase, or titlecase equivalent.
2//!
3//! ### Example
4//!
5//! ```
6//! use std::num::NonZeroU32;
7//!
8//! // U+0307 is COMBINING DOT ABOVE
9//! assert_eq!(unicode_case_mapping::to_lowercase('İ'), ['i' as u32, 0x0307]);
10//! assert_eq!(unicode_case_mapping::to_lowercase('ß'), [0; 2]);
11//! assert_eq!(unicode_case_mapping::to_uppercase('ß'), ['S' as u32, 'S' as u32, 0]);
12//! assert_eq!(unicode_case_mapping::to_titlecase('ß'), ['S' as u32, 's' as u32, 0]);
13//! assert_eq!(unicode_case_mapping::to_titlecase('-'), [0; 3]);
14//! assert_eq!(unicode_case_mapping::case_folded('I'), NonZeroU32::new('i' as u32));
15//! assert_eq!(unicode_case_mapping::case_folded('ß'), None);
16//! assert_eq!(unicode_case_mapping::case_folded('ẞ'), NonZeroU32::new('ß' as u32));
17//! ```
18
19mod case_folding_simple;
20mod case_mapping;
21mod tables;
22pub use case_mapping::{case_folded, to_lowercase, to_titlecase, to_uppercase};
23
24/// The version of [Unicode](http://www.unicode.org/)
25/// that this version of unicode-case-mapping was generated from.
26pub const UNICODE_VERSION: (u64, u64, u64) = (16, 0, 0);