pub(crate) struct FontFaceAtRuleParser<'a>
{
pub(crate) context: &'a ParserContext,
pub(crate) rule: &'a mut FontFaceAtRule,
}
impl<'a, 'i> AtRuleParser<'i> for FontFaceAtRuleParser<'a>
{
type PreludeNoBlock = ();
type PreludeBlock = ();
type AtRule = ();
type Error = CustomParseError<'i>;
}
impl<'a, 'i> DeclarationParser<'i> for FontFaceAtRuleParser<'a>
{
type Declaration = ();
type Error = CustomParseError<'i>;
fn parse_value<'t>(&mut self, name: CowRcStr<'i>, input: &mut Parser<'i, 't>) -> Result<Self::Declaration, ParseError<'i, CustomParseError<'i>>>
{
match_ignore_ascii_case!
{
&name,
"font-family" => self.rule.family = Some(input.parse_entirely(|i| Parse::parse(self.context, i))?),
"src" => self.rule.sources = Some(input.parse_entirely(|i| Parse::parse(self.context, i))?),
"font-style" => self.rule.style = Some(input.parse_entirely(|i| Parse::parse(self.context, i))?),
"font-weight" => self.rule.weight = Some(input.parse_entirely(|i| Parse::parse(self.context, i))?),
"font-stretch" => self.rule.stretch = Some(input.parse_entirely(|i| Parse::parse(self.context, i))?),
"font-display" => self.rule.display = Some(input.parse_entirely(|i| Parse::parse(self.context, i))?),
"unicode-range" => self.rule.unicode_range = Some(input.parse_entirely(|i| Parse::parse(self.context, i))?),
"font-feature-settings" => self.rule.feature_settings = Some(input.parse_entirely(|i| Parse::parse(self.context, i))?),
"font-language-override" => self.rule.language_override = Some(input.parse_entirely(|i| FontLanguageOverride::parse(i))?),
_ => return Err(ParseError::Custom(CustomParseError::UnsupportedFontFaceProperty(name.clone())))
}
Ok(())
}
}