#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
pub enum FontLanguageOverride
{
normal,
Override(OpenTypeLanguageTag),
}
impl ToCss for FontLanguageOverride
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
use self::FontLanguageOverride::*;;
match *self
{
normal => serialize_identifier("normal", dest),
Override(openTypeLanguageTag) => openTypeLanguageTag.to_css(dest),
}
}
}
impl FontLanguageOverride
{
pub(crate) fn parse<'i, 't>(input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i, CustomParseError<'i>>>
{
use self::FontLanguageOverride::*;;
if let Ok(value) = input.try::<>(|input|
{
match input.expect_string()
{
Err(_) => Err(()),
Ok(value) =>
{
match OpenTypeLanguageTag::parse(value)
{
Err(_) => Err(()),
Ok(openTypeLanguageTag) => Ok(Override(openTypeLanguageTag))
}
}
}
})
{
return Ok(value)
}
let identifier = input.expect_ident()?.clone();
match_ignore_ascii_case!
{
&identifier,
"normal" => Ok(normal),
_ => Err(ParseError::Custom(CustomParseError::InvalidFontLanguageOverrideIdentifier(identifier.clone()))),
}
}
}