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}