#[derive(Debug, Clone)]
pub struct DocumentAtRule
{
pub vendor_prefix: Option<VendorPrefix>,
pub condition: DocumentCondition,
pub rules: CssRules,
}
impl HasCssRules for DocumentAtRule
{
#[inline(always)]
fn css_rules(&self) -> &CssRules
{
&self.rules
}
#[inline(always)]
fn css_rules_mut(&mut self) -> &mut CssRules
{
&mut self.rules
}
#[inline(always)]
fn css_rules_slice(&self) -> &[CssRule]
{
&self.rules.0[..]
}
#[inline(always)]
fn css_rules_vec(&self) -> &Vec<CssRule>
{
&self.rules.0
}
#[inline(always)]
fn css_rules_vec_mut(&mut self) -> &mut Vec<CssRule>
{
&mut self.rules.0
}
}
impl ToCss for DocumentAtRule
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
dest.write_str("@")?;
if let Some(ref vendor_prefix) = self.vendor_prefix
{
vendor_prefix.to_css(dest)?;
}
dest.write_str("document ")?;
self.condition.to_css(dest)?;
dest.write_char('{')?;
self.rules.to_css(dest)?;
dest.write_char('}')
}
}
impl HasVendorPrefix for DocumentAtRule
{
#[inline(always)]
fn isNotVendorPrefixed(&self) -> bool
{
self.vendor_prefix.is_none()
}
}
impl VendorPrefixedAtRule for DocumentAtRule
{
}
impl DocumentAtRule
{
pub fn evaluate<D: Document>(&self, document: &D) -> bool
{
self.condition.evaluate(document)
}
}