#[derive(Clone, Debug, Ord, PartialOrd, Eq, PartialEq, Hash)]
pub struct FamilyName
{
pub name: Atom,
pub syntax: FamilyNameSyntax,
}
impl ToCss for FamilyName
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
use self::FamilyNameSyntax::*;
match self.syntax
{
Quoted => serialize_string(self.name.as_ref(), dest),
Identifiers(ref serialization) => dest.write_str(&*serialization),
}
}
}
impl Parse for FamilyName
{
fn parse<'i, 't>(_: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i, CustomParseError<'i>>>
{
use self::FontFamily::*;
match FontFamily::parse(input)
{
Ok(FamilyName(name)) => Ok(name),
Ok(Generic(_)) => Err(ParseError::Custom(CustomParseError::FontFaceAtRuleFontFamilyCanNotBeGeneric)),
Err(error) => Err(error)
}
}
}
impl FamilyName
{
pub(crate) fn parse_family_name_list<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Vec<Self>, ParseError<'i, CustomParseError<'i>>>
{
input.parse_comma_separated(|i| Self::parse(context, i)).map_err(|e| e.into())
}
}