#[derive(Debug, Clone)]
pub struct KeyframesAtRule
{
pub vendor_prefix: Option<VendorPrefix>,
pub name: KeyframesName,
pub keyframes: Vec<Keyframe>,
}
impl ToCss for KeyframesAtRule
{
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("keyframes ")?;
self.name.to_css(dest)?;
dest.write_char('{')?;
for keyframe in self.keyframes.iter()
{
keyframe.to_css(dest)?;
}
dest.write_char('}')
}
}
impl HasVendorPrefix for KeyframesAtRule
{
#[inline(always)]
fn isNotVendorPrefixed(&self) -> bool
{
self.vendor_prefix.is_none()
}
}
impl VendorPrefixedAtRule for KeyframesAtRule
{
}
impl KeyframesAtRule
{
pub fn find_rule(&self, selector: KeyframeSelector) -> Option<usize>
{
for (index, keyframe) in self.keyframes.iter().enumerate().rev()
{
if keyframe.selector == selector
{
return Some(index);
}
}
None
}
}