#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
pub struct PropertyDeclaration<I: HasImportance>
{
pub vendor_prefix: Option<VendorPrefix>,
pub name: Atom,
pub value: UnparsedPropertyValue,
pub importance: I,
}
impl<I: HasImportance> ToCss for PropertyDeclaration<I>
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
self.to_css_without_trailing_semicolon(dest)?;
dest.write_char(';')
}
}
impl<I: HasImportance> HasVendorPrefix for PropertyDeclaration<I>
{
#[inline(always)]
fn isNotVendorPrefixed(&self) -> bool
{
self.vendor_prefix.is_none()
}
}
impl<I: HasImportance> PropertyDeclaration<I>
{
#[inline(always)]
pub fn hasACustomPropertyName(&self) -> bool
{
self.name.starts_with("--")
}
#[inline(always)]
pub fn hasAsciiNameIgnoringCase(&self, name: &str) -> bool
{
self.name.eq_ignore_ascii_case(name)
}
#[inline(always)]
fn to_css_without_trailing_semicolon<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
if let Some(ref vendorPrefix) = self.vendor_prefix
{
vendorPrefix.to_css(dest)?;
}
self.name.to_css(dest)?;
dest.write_char(':')?;
self.value.to_css(dest)?;
self.importance.to_css(dest)
}
}