#[derive(Clone, Debug, PartialEq)]
pub struct ViewportAtRule
{
pub vendor_prefix: Option<VendorPrefix>,
pub declarations: Vec<ViewportDescriptorDeclaration>
}
impl ViewportAtRule
{
pub(crate) fn parse_body<'i, 't>(vendor_prefix: Option<VendorPrefix>, context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i, CustomParseError<'i>>>
{
let parser = ViewportAtRuleParser { context };
let mut declarations = Vec::new();
let mut parser = DeclarationListParser::new(input, parser);
while let Some(result) = parser.next()
{
match result
{
Ok(viewportDescriptorDeclaration) =>
{
declarations.push(viewportDescriptorDeclaration);
}
Err(preciseParseError) => return Err(preciseParseError.error),
}
}
Ok(Self { vendor_prefix, declarations })
}
}
impl ToCss for ViewportAtRule
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
dest.write_char('@')?;
if let Some(ref vendorPrefix) = self.vendor_prefix
{
vendorPrefix.to_css(dest)?;
}
dest.write_str("viewport{")?;
let length = self.declarations.len();
if length != 0
{
for index in 0..(length - 1)
{
(unsafe { self.declarations.get_unchecked(index) }).to_css(dest)?;
}
(unsafe { self.declarations.get_unchecked(length -1) }).to_css_without_trailing_semicolon(dest)?
}
dest.write_char('}')
}
}
impl HasVendorPrefix for ViewportAtRule
{
#[inline(always)]
fn isNotVendorPrefixed(&self) -> bool
{
self.vendor_prefix.is_none()
}
}
impl VendorPrefixedAtRule for ViewportAtRule
{
}