• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // This file is part of ICU4X. For terms of use, please see the file
2 // called LICENSE at the top level of the ICU4X source tree
3 // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
4 
5 //! Definitions of [Unicode Properties] and APIs for
6 //! retrieving property data in an appropriate data structure.
7 //!
8 //! This module is published as its own crate ([`icu_properties`](https://docs.rs/icu_properties/latest/icu_properties/))
9 //! and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
10 //!
11 //! APIs that return a [`CodePointSetData`] exist for binary properties and certain enumerated
12 //! properties.
13 //!
14 //! APIs that return a [`CodePointMapData`] exist for certain enumerated properties.
15 //!
16 //! # Examples
17 //!
18 //! ## Property data as `CodePointSetData`s
19 //!
20 //! ```
21 //! use icu::properties::{CodePointSetData, CodePointMapData};
22 //! use icu::properties::props::{GeneralCategory, Emoji};
23 //!
24 //! // A binary property as a `CodePointSetData`
25 //!
26 //! assert!(CodePointSetData::new::<Emoji>().contains('��')); // U+1F383 JACK-O-LANTERN
27 //! assert!(!CodePointSetData::new::<Emoji>().contains('木')); // U+6728
28 //!
29 //! // An individual enumerated property value as a `CodePointSetData`
30 //!
31 //! let line_sep_data = CodePointMapData::<GeneralCategory>::new()
32 //!     .get_set_for_value(GeneralCategory::LineSeparator);
33 //! let line_sep = line_sep_data.as_borrowed();
34 //!
35 //! assert!(line_sep.contains('\u{2028}'));
36 //! assert!(!line_sep.contains('\u{2029}'));
37 //! ```
38 //!
39 //! ## Property data as `CodePointMapData`s
40 //!
41 //! ```
42 //! use icu::properties::CodePointMapData;
43 //! use icu::properties::props::Script;
44 //!
45 //! assert_eq!(CodePointMapData::<Script>::new().get('��'), Script::Common); // U+1F383 JACK-O-LANTERN
46 //! assert_eq!(CodePointMapData::<Script>::new().get('木'), Script::Han); // U+6728
47 //! ```
48 //!
49 //! [`ICU4X`]: ../icu/index.html
50 //! [Unicode Properties]: https://unicode-org.github.io/icu/userguide/strings/properties.html
51 //! [`CodePointSetData`]: crate::CodePointSetData
52 //! [`CodePointMapData`]: crate::CodePointMapData
53 
54 // https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
55 #![cfg_attr(not(any(test, doc)), no_std)]
56 #![cfg_attr(
57     not(test),
58     deny(
59         clippy::indexing_slicing,
60         clippy::unwrap_used,
61         clippy::expect_used,
62         clippy::panic,
63         clippy::exhaustive_structs,
64         clippy::exhaustive_enums,
65         clippy::trivially_copy_pass_by_ref,
66         missing_debug_implementations,
67     )
68 )]
69 #![warn(missing_docs)]
70 
71 #[cfg(feature = "alloc")]
72 extern crate alloc;
73 
74 mod code_point_set;
75 pub use code_point_set::{CodePointSetData, CodePointSetDataBorrowed};
76 mod code_point_map;
77 pub use code_point_map::{CodePointMapData, CodePointMapDataBorrowed};
78 mod emoji;
79 pub use emoji::{EmojiSetData, EmojiSetDataBorrowed};
80 mod names;
81 pub use names::{
82     PropertyNamesLong, PropertyNamesLongBorrowed, PropertyNamesShort, PropertyNamesShortBorrowed,
83     PropertyParser, PropertyParserBorrowed,
84 };
85 mod runtime;
86 
87 // NOTE: The Pernosco debugger has special knowledge
88 // of the `CanonicalCombiningClass` struct inside the `props`
89 // module. Please do not change the crate-module-qualified
90 // name of that struct without coordination.
91 pub mod props;
92 pub mod provider;
93 pub mod script;
94 
95 mod bidi;
96 mod trievalue;
97 
98 mod private {
99     pub trait Sealed {}
100 }
101