Skip to main content

css_ast/rules/
moz.rs

1use super::prelude::*;
2use crate::{DocumentMatcherList, DocumentRuleBlock};
3
4#[node]
5#[derive(Parse, Peek, ToSpan, ToCursors, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
7#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit)]
8#[derive(csskit_derives::NodeWithMetadata)]
9#[metadata(node_kinds = AtRule | Deprecated | NonStandard, used_at_rules = MozDocument, vendor_prefixes = Moz)]
10pub struct MozDocumentRule<'a> {
11	#[cfg_attr(feature = "visitable", visit(skip))]
12	#[atom(CssAtomSet::_MozDocument)]
13	pub name: T![AtKeyword],
14	pub prelude: DocumentMatcherList<'a>,
15	#[metadata(block)]
16	pub block: DocumentRuleBlock<'a>,
17}
18
19#[cfg(test)]
20mod tests {
21	use super::*;
22	use crate::CssAtomSet;
23	use css_parse::assert_parse;
24
25	#[test]
26	fn test_writes() {
27		assert_parse!(CssAtomSet::ATOMS, MozDocumentRule, r#"@-moz-document url(http://www.w3.org){}"#);
28		assert_parse!(
29			CssAtomSet::ATOMS,
30			MozDocumentRule,
31			r#"@-moz-document url(http://www.w3.org),domain("mozilla.org"){}"#
32		);
33		assert_parse!(
34			CssAtomSet::ATOMS,
35			MozDocumentRule,
36			r#"@-moz-document url(http://www.w3.org),url-prefix("http://www.w3.org/Style/"),domain("mozilla.org"){body{color:black}}"#
37		);
38	}
39}