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}