unic_char_basics/lib.rs
1// Copyright 2018 The UNIC Project Developers.
2//
3// See the COPYRIGHT file at the top-level directory of this distribution.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
11#![no_std]
12#![warn(
13 bad_style,
14 missing_debug_implementations,
15 missing_docs,
16 unconditional_recursion
17)]
18#![forbid(unsafe_code)]
19
20//! # UNIC — Unicode Character Tools — Basic Stable Character Properties
21//!
22//! A simple way to control iteration over a range of characters.
23//!
24//! # Examples
25//!
26//! ```
27//! extern crate unic_char_basics;
28//! use unic_char_basics::{is_noncharacter, is_private_use};
29//!
30//! # fn main() {
31//! // Plane 0 (BMP)
32//! assert_eq!(is_noncharacter('\u{0}'), false);
33//! assert_eq!(is_noncharacter('\u{80}'), false);
34//! assert_eq!(is_noncharacter('\u{e000}'), false);
35//! assert_eq!(is_noncharacter('\u{f8ff}'), false);
36//! assert_eq!(is_noncharacter('\u{fdd0}'), true);
37//! assert_eq!(is_noncharacter('\u{fdef}'), true);
38//! assert_eq!(is_noncharacter('\u{fffd}'), false);
39//! assert_eq!(is_noncharacter('\u{fffe}'), true);
40//! assert_eq!(is_noncharacter('\u{ffff}'), true);
41//!
42//! assert_eq!(is_private_use('\u{0}'), false);
43//! assert_eq!(is_private_use('\u{80}'), false);
44//! assert_eq!(is_private_use('\u{e000}'), true);
45//! assert_eq!(is_private_use('\u{f8ff}'), true);
46//! assert_eq!(is_private_use('\u{fdd0}'), false);
47//! assert_eq!(is_private_use('\u{fdef}'), false);
48//! assert_eq!(is_private_use('\u{fffd}'), false);
49//! assert_eq!(is_private_use('\u{fffe}'), false);
50//! assert_eq!(is_private_use('\u{ffff}'), false);
51//!
52//! // Plane 16 (PUA-B)
53//! assert_eq!(is_noncharacter('\u{10_0000}'), false);
54//! assert_eq!(is_noncharacter('\u{10_0001}'), false);
55//! assert_eq!(is_noncharacter('\u{10_fffd}'), false);
56//! assert_eq!(is_noncharacter('\u{10_fffe}'), true);
57//! assert_eq!(is_noncharacter('\u{10_ffff}'), true);
58//!
59//! assert_eq!(is_private_use('\u{10_0000}'), true);
60//! assert_eq!(is_private_use('\u{10_0001}'), true);
61//! assert_eq!(is_private_use('\u{10_fffd}'), true);
62//! assert_eq!(is_private_use('\u{10_fffe}'), false);
63//! assert_eq!(is_private_use('\u{10_ffff}'), false);
64//! # }
65//! ```
66
67#[cfg(feature = "std")]
68extern crate core;
69
70mod pkg_info;
71pub use crate::pkg_info::{PKG_DESCRIPTION, PKG_NAME, PKG_VERSION};
72
73pub mod noncharacter;
74pub use crate::noncharacter::is_noncharacter;
75
76pub mod private_use;
77pub use crate::private_use::is_private_use;
78
79pub mod notation;
80pub use crate::notation::unicode_notation;