css_ast/rules/
moz.rs

1use crate::{DocumentMatcherList, DocumentRuleBlock};
2use css_parse::{AtRule, atkeyword_set};
3use csskit_derives::{Parse, Peek, ToCursors, ToSpan, Visitable};
4
5atkeyword_set!(pub struct AtMozDocumentKeyword "-moz-document");
6
7#[derive(Parse, Peek, ToSpan, ToCursors, Visitable, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
8#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
9#[visit]
10pub struct MozDocumentRule<'a>(pub AtRule<AtMozDocumentKeyword, DocumentMatcherList<'a>, DocumentRuleBlock<'a>>);
11
12#[cfg(test)]
13mod tests {
14	use super::*;
15	use css_parse::assert_parse;
16
17	#[test]
18	fn size_test() {
19		assert_eq!(std::mem::size_of::<MozDocumentRule>(), 128);
20	}
21
22	#[test]
23	fn test_writes() {
24		assert_parse!(MozDocumentRule, r#"@-moz-document url(http://www.w3.org){}"#);
25		assert_parse!(MozDocumentRule, r#"@-moz-document url(http://www.w3.org),domain("mozilla.org"){}"#);
26		assert_parse!(
27			MozDocumentRule,
28			r#"@-moz-document url(http://www.w3.org),url-prefix("http://www.w3.org/Style/"),domain("mozilla.org"){body{color:black}}"#
29		);
30	}
31}