parcel_css/rules/
namespace.rs1use super::Location;
4use crate::error::PrinterError;
5use crate::printer::Printer;
6use crate::traits::ToCss;
7use crate::values::string::CowArcStr;
8use cssparser::*;
9
10#[derive(Debug, PartialEq, Clone)]
12#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13pub struct NamespaceRule<'i> {
14 #[cfg_attr(feature = "serde", serde(borrow))]
16 pub prefix: Option<CowArcStr<'i>>,
17 #[cfg_attr(feature = "serde", serde(borrow))]
19 pub url: CowArcStr<'i>,
20 pub loc: Location,
22}
23
24impl<'i> ToCss for NamespaceRule<'i> {
25 fn to_css<W>(&self, dest: &mut Printer<W>) -> Result<(), PrinterError>
26 where
27 W: std::fmt::Write,
28 {
29 dest.add_mapping(self.loc);
30 dest.write_str("@namespace ")?;
31 if let Some(prefix) = &self.prefix {
32 serialize_identifier(&prefix, dest)?;
33 dest.write_char(' ')?;
34 }
35
36 serialize_string(&self.url, dest)?;
37 dest.write_char(';')
38 }
39}