use {
super::KeyframePercentage,
crate::CustomParseError,
cssparser::{ParseError, Parser, ToCss},
std::fmt,
};
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct KeyframeSelector(pub Vec<KeyframePercentage>);
impl ToCss for KeyframeSelector {
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result {
let mut iter = self.0.iter();
iter.next().unwrap().to_css(dest)?;
for percentage in iter {
dest.write_char(',')?;
percentage.to_css(dest)?;
}
Ok(())
}
}
impl KeyframeSelector {
#[inline]
pub fn percentages(&self) -> &[KeyframePercentage] {
&self.0
}
pub(crate) fn parse<'i, 't>(
input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i, CustomParseError<'i>>> {
input
.parse_comma_separated(KeyframePercentage::parse)
.map(KeyframeSelector)
}
}