use crate::provider::*;
use crate::sets::UnicodeSetData;
use crate::PropertiesError;
use icu_provider::prelude::*;
macro_rules! make_exemplar_chars_unicode_set_property {
(
// currently unused
marker: $marker_name:ident;
keyed_data_marker: $keyed_data_marker:ty;
func:
$vis:vis fn $funcname:ident();
$(#[$attr:meta])*
$vis2:vis fn $constname:ident();
) => {
#[doc = concat!("A version of [`", stringify!($constname), "()`] that uses custom data provided by a [`DataProvider`].")]
$vis fn $funcname(
provider: &(impl DataProvider<$keyed_data_marker> + ?Sized),
locale: &DataLocale,
) -> Result<UnicodeSetData, PropertiesError> {
Ok(provider.load(
DataRequest {
locale,
metadata: Default::default(),
})
.and_then(DataResponse::take_payload)
.map(UnicodeSetData::from_data)?
)
}
$(#[$attr])*
#[cfg(feature = "compiled_data")]
$vis2 fn $constname(
locale: &DataLocale,
) -> Result<UnicodeSetData, PropertiesError> {
Ok(UnicodeSetData::from_data(
DataProvider::<$keyed_data_marker>::load(
&crate::provider::Baked,
DataRequest {
locale,
metadata: Default::default(),
})
.and_then(DataResponse::take_payload)?
))
}
}
}
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersMain;
keyed_data_marker: ExemplarCharactersMainV1Marker;
func:
pub fn load_exemplars_main();
pub fn exemplars_main();
);
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersAuxiliary;
keyed_data_marker: ExemplarCharactersAuxiliaryV1Marker;
func:
pub fn load_exemplars_auxiliary();
pub fn exemplars_auxiliary();
);
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersPunctuation;
keyed_data_marker: ExemplarCharactersPunctuationV1Marker;
func:
pub fn load_exemplars_punctuation();
pub fn exemplars_punctuation();
);
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersNumbers;
keyed_data_marker: ExemplarCharactersNumbersV1Marker;
func:
pub fn load_exemplars_numbers();
pub fn exemplars_numbers();
);
make_exemplar_chars_unicode_set_property!(
marker: ExemplarCharactersIndex;
keyed_data_marker: ExemplarCharactersIndexV1Marker;
func:
pub fn load_exemplars_index();
pub fn exemplars_index();
);