Function icu::properties::sets::load_for_ecma262_unstable
source · pub fn load_for_ecma262_unstable<P>(
provider: &P,
name: &str
) -> Result<CodePointSetData, PropertiesError>where
P: DataProvider<AsciiHexDigitV1Marker> + DataProvider<AlphabeticV1Marker> + DataProvider<BidiControlV1Marker> + DataProvider<BidiMirroredV1Marker> + DataProvider<CaseIgnorableV1Marker> + DataProvider<CasedV1Marker> + DataProvider<ChangesWhenCasefoldedV1Marker> + DataProvider<ChangesWhenCasemappedV1Marker> + DataProvider<ChangesWhenLowercasedV1Marker> + DataProvider<ChangesWhenNfkcCasefoldedV1Marker> + DataProvider<ChangesWhenTitlecasedV1Marker> + DataProvider<ChangesWhenUppercasedV1Marker> + DataProvider<DashV1Marker> + DataProvider<DefaultIgnorableCodePointV1Marker> + DataProvider<DeprecatedV1Marker> + DataProvider<DiacriticV1Marker> + DataProvider<EmojiV1Marker> + DataProvider<EmojiComponentV1Marker> + DataProvider<EmojiModifierV1Marker> + DataProvider<EmojiModifierBaseV1Marker> + DataProvider<EmojiPresentationV1Marker> + DataProvider<ExtendedPictographicV1Marker> + DataProvider<ExtenderV1Marker> + DataProvider<GraphemeBaseV1Marker> + DataProvider<GraphemeExtendV1Marker> + DataProvider<HexDigitV1Marker> + DataProvider<IdsBinaryOperatorV1Marker> + DataProvider<IdsTrinaryOperatorV1Marker> + DataProvider<IdContinueV1Marker> + DataProvider<IdStartV1Marker> + DataProvider<IdeographicV1Marker> + DataProvider<JoinControlV1Marker> + DataProvider<LogicalOrderExceptionV1Marker> + DataProvider<LowercaseV1Marker> + DataProvider<MathV1Marker> + DataProvider<NoncharacterCodePointV1Marker> + DataProvider<PatternSyntaxV1Marker> + DataProvider<PatternWhiteSpaceV1Marker> + DataProvider<QuotationMarkV1Marker> + DataProvider<RadicalV1Marker> + DataProvider<RegionalIndicatorV1Marker> + DataProvider<SentenceTerminalV1Marker> + DataProvider<SoftDottedV1Marker> + DataProvider<TerminalPunctuationV1Marker> + DataProvider<UnifiedIdeographV1Marker> + DataProvider<UppercaseV1Marker> + DataProvider<VariationSelectorV1Marker> + DataProvider<WhiteSpaceV1Marker> + DataProvider<XidContinueV1Marker> + DataProvider<XidStartV1Marker> + ?Sized,
Expand description
Returns a type capable of looking up values for a property specified as a string, as long as it is a binary property listed in ECMA-262, using strict matching on the names in the spec.
This handles every property required by ECMA-262 /u
regular expressions, except for:
Script
andGeneral_Category
: handle these directly withmaps::load_general_category()
andmaps::load_script()
. using property values parsed viaGeneralCategory::get_name_to_enum_mapper()
andScript::get_name_to_enum_mapper()
if necessary.Script_Extensions
: handle this directly using APIs fromcrate::script
, likescript::load_script_with_extensions_unstable()
General_Category
mask values: Handle this alongsideGeneral_Category
usingGeneralCategoryGroup
, using property values parsed viaGeneralCategoryGroup::get_name_to_enum_mapper()
if necessaryAssigned
,All
, andASCII
pseudoproperties: Handle these using their equivalent sets:Any
can be expressed as the range[\u{0}-\u{10FFFF}]
Assigned
can be expressed as the inverse of the setgc=Cn
(i.e.,\P{gc=Cn}
).ASCII
can be expressed as the range[\u{0}-\u{7F}]
General_Category
property values can themselves be treated like properties using a shorthand in ECMA262, simply create the correspondingGeneralCategory
set.
use icu::properties::sets;
let data =
sets::load_for_ecma262_unstable(&icu_testdata::unstable(), "Emoji")
.expect("loading data failed");
let emoji = data.as_borrowed();
assert!(emoji.contains('🔥')); // U+1F525 FIRE
assert!(!emoji.contains('V'));