style/stylesheets/
namespace_rule.rs1use crate::shared_lock::{SharedRwLockReadGuard, ToCssWithGuard};
8use crate::{Namespace, Prefix};
9use cssparser::SourceLocation;
10use std::fmt::{self, Write};
11use style_traits::{CssStringWriter, CssWriter, ToCss};
12
13#[derive(Clone, Debug, PartialEq, ToShmem)]
15#[allow(missing_docs)]
16pub struct NamespaceRule {
17 pub prefix: Option<Prefix>,
19 pub url: Namespace,
21 pub source_location: SourceLocation,
23}
24
25impl ToCssWithGuard for NamespaceRule {
26 fn to_css(
28 &self,
29 _guard: &SharedRwLockReadGuard,
30 dest_str: &mut CssStringWriter,
31 ) -> fmt::Result {
32 let mut dest = CssWriter::new(dest_str);
33 dest.write_str("@namespace ")?;
34 if let Some(ref prefix) = self.prefix {
35 prefix.to_css(&mut dest)?;
36 dest.write_char(' ')?;
37 }
38 dest.write_str("url(")?;
39 self.url.to_string().to_css(&mut dest)?;
40 dest.write_str(");")
41 }
42}