@@ -3,21 +3,23 @@ use selectors::SelectorList;
33use std:: fmt;
44use std:: cell:: RefCell ;
55use crate :: media_query:: * ;
6- use crate :: printer:: Printer ;
7- use crate :: traits:: { Parse , ToCss } ;
6+ use crate :: traits:: Parse ;
87use std:: fmt:: Write ;
98use crate :: selector:: { Selectors , SelectorParser } ;
109use crate :: rules:: {
10+ CssRule ,
1111 keyframes:: { KeyframeListParser , KeyframesRule } ,
1212 font_face:: { FontFaceRule , FontFaceDeclarationParser } ,
1313 page:: { PageSelector , PageRule } ,
1414 supports:: { SupportsCondition , SupportsRule } ,
1515 counter_style:: CounterStyleRule ,
1616 namespace:: NamespaceRule ,
17- import:: ImportRule
17+ import:: ImportRule ,
18+ media:: MediaRule ,
19+ style:: StyleRule
1820} ;
1921use crate :: values:: ident:: CustomIdent ;
20- use crate :: declaration:: { Declaration , DeclarationHandler } ;
22+ use crate :: declaration:: { Declaration , DeclarationBlock } ;
2123use crate :: properties:: VendorPrefix ;
2224
2325#[ derive( Eq , PartialEq , Clone ) ]
@@ -70,8 +72,7 @@ impl std::cmp::PartialEq<str> for CssString {
7072}
7173
7274/// The parser for the top-level rules in a stylesheet.
73- pub struct TopLevelRuleParser {
74- }
75+ pub struct TopLevelRuleParser { }
7576
7677impl < ' b > TopLevelRuleParser {
7778 fn nested < ' a : ' b > ( & ' a self ) -> NestedRuleParser {
@@ -212,116 +213,7 @@ impl<'a, 'i> QualifiedRuleParser<'i> for TopLevelRuleParser {
212213}
213214
214215#[ derive( Clone ) ]
215- struct NestedRuleParser {
216- }
217-
218- #[ derive( Debug , PartialEq ) ]
219- pub struct MediaRule {
220- pub query : MediaList ,
221- pub rules : Vec < CssRule >
222- }
223-
224- impl ToCss for MediaRule {
225- fn to_css < W > ( & self , dest : & mut Printer < W > ) -> fmt:: Result where W : fmt:: Write {
226- dest. write_str ( "@media " ) ?;
227- self . query . to_css ( dest) ?;
228- dest. whitespace ( ) ?;
229- dest. write_char ( '{' ) ?;
230- dest. indent ( ) ;
231- for rule in self . rules . iter ( ) {
232- dest. newline ( ) ?;
233- rule. to_css ( dest) ?;
234- }
235- dest. dedent ( ) ;
236- dest. newline ( ) ?;
237- dest. write_char ( '}' )
238- }
239- }
240-
241- #[ derive( Debug , PartialEq ) ]
242- pub struct StyleRule {
243- pub selectors : SelectorList < Selectors > ,
244- pub declarations : DeclarationBlock
245- }
246-
247- impl ToCss for StyleRule {
248- fn to_css < W > ( & self , dest : & mut Printer < W > ) -> fmt:: Result where W : fmt:: Write {
249- self . selectors . to_css ( dest) ?;
250- self . declarations . to_css ( dest)
251- }
252- }
253-
254- #[ derive( Debug , PartialEq ) ]
255- pub struct DeclarationBlock {
256- pub declarations : Vec < Declaration >
257- }
258-
259- impl ToCss for DeclarationBlock {
260- fn to_css < W > ( & self , dest : & mut Printer < W > ) -> fmt:: Result where W : fmt:: Write {
261- dest. whitespace ( ) ?;
262- dest. write_char ( '{' ) ?;
263- dest. indent ( ) ;
264- let len = self . declarations . len ( ) ;
265- for ( i, decl) in self . declarations . iter ( ) . enumerate ( ) {
266- dest. newline ( ) ?;
267- decl. to_css ( dest) ?;
268- if i != len - 1 || !dest. minify {
269- dest. write_char ( ';' ) ?;
270- }
271- }
272- dest. dedent ( ) ;
273- dest. newline ( ) ?;
274- dest. write_char ( '}' )
275- }
276- }
277-
278- impl DeclarationBlock {
279- pub fn minify ( & mut self , handler : & mut DeclarationHandler , important_handler : & mut DeclarationHandler ) {
280- let mut decls: Vec < Declaration > = vec ! [ ] ;
281- for decl in self . declarations . iter ( ) {
282- let handled =
283- ( decl. important && important_handler. handle_property ( decl) ) ||
284- ( !decl. important && handler. handle_property ( decl) ) ;
285-
286- if !handled {
287- decls. push ( decl. clone ( ) ) ;
288- }
289- }
290-
291- decls. extend ( handler. finalize ( ) ) ;
292- decls. extend ( important_handler. finalize ( ) ) ;
293- self . declarations = decls;
294- }
295- }
296-
297- #[ derive( Debug , PartialEq ) ]
298- pub enum CssRule {
299- Media ( MediaRule ) ,
300- Import ( ImportRule ) ,
301- Style ( StyleRule ) ,
302- Keyframes ( KeyframesRule ) ,
303- FontFace ( FontFaceRule ) ,
304- Page ( PageRule ) ,
305- Supports ( SupportsRule ) ,
306- CounterStyle ( CounterStyleRule ) ,
307- Namespace ( NamespaceRule )
308- }
309-
310- impl ToCss for CssRule {
311- fn to_css < W > ( & self , dest : & mut Printer < W > ) -> fmt:: Result where W : fmt:: Write {
312- match self {
313- CssRule :: Media ( media) => media. to_css ( dest) ,
314- CssRule :: Import ( import) => import. to_css ( dest) ,
315- CssRule :: Style ( style) => style. to_css ( dest) ,
316- CssRule :: Keyframes ( keyframes) => keyframes. to_css ( dest) ,
317- CssRule :: FontFace ( font_face) => font_face. to_css ( dest) ,
318- CssRule :: Page ( font_face) => font_face. to_css ( dest) ,
319- CssRule :: Supports ( supports) => supports. to_css ( dest) ,
320- CssRule :: CounterStyle ( counter_style) => counter_style. to_css ( dest) ,
321- CssRule :: Namespace ( namespace) => namespace. to_css ( dest)
322- }
323- }
324- }
216+ struct NestedRuleParser { }
325217
326218impl < ' a , ' b > NestedRuleParser {
327219 fn parse_nested_rules ( & mut self , input : & mut Parser ) -> Vec < CssRule > {
0 commit comments