use super::generated::script as gen;
pub use gen::Script;
#[inline]
#[must_use]
pub const fn script(c: char) -> Script {
gen::script(c as u32)
}
#[inline]
#[must_use]
pub const fn script_u32(cp: u32) -> Script {
gen::script(cp)
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ScriptExtensions {
Single(Script),
Multiple(&'static [Script]),
}
impl ScriptExtensions {
#[inline]
#[must_use]
pub const fn as_slice(&self) -> &[Script] {
match self {
ScriptExtensions::Single(s) => core::slice::from_ref(s),
ScriptExtensions::Multiple(set) => set,
}
}
#[inline]
#[must_use]
pub fn contains(&self, s: Script) -> bool {
self.as_slice().contains(&s)
}
#[inline]
pub fn iter(&self) -> core::iter::Copied<core::slice::Iter<'_, Script>> {
self.as_slice().iter().copied()
}
}
#[inline]
#[must_use]
pub const fn script_extensions(c: char) -> ScriptExtensions {
script_extensions_u32(c as u32)
}
#[inline]
#[must_use]
pub const fn script_extensions_u32(cp: u32) -> ScriptExtensions {
match gen::script_extensions(cp) {
Some(set) => ScriptExtensions::Multiple(set),
None => ScriptExtensions::Single(gen::script(cp)),
}
}