@@ -7,6 +7,15 @@ use crate::vendor_prefix::VendorPrefix;
77use cssparser:: { serialize_identifier, SourceLocation } ;
88use parcel_sourcemap:: { OriginalLocation , SourceMap } ;
99
10+ #[ derive( Default ) ]
11+ pub struct PrinterOptions < ' a > {
12+ pub minify : bool ,
13+ pub source_map : Option < & ' a mut SourceMap > ,
14+ pub targets : Option < Browsers > ,
15+ pub analyze_dependencies : bool ,
16+ pub pseudo_classes : Option < PseudoClasses < ' a > > ,
17+ }
18+
1019#[ derive( Default , Debug ) ]
1120pub struct PseudoClasses < ' a > {
1221 pub hover : Option < & ' a str > ,
@@ -16,47 +25,46 @@ pub struct PseudoClasses<'a> {
1625 pub focus_within : Option < & ' a str > ,
1726}
1827
19- pub ( crate ) struct Printer < ' a , W > {
20- pub sources : Option < & ' a Vec < String > > ,
28+ pub struct Printer < ' a , W > {
29+ pub ( crate ) sources : Option < & ' a Vec < String > > ,
2130 dest : & ' a mut W ,
2231 source_map : Option < & ' a mut SourceMap > ,
23- pub source_index : u32 ,
32+ pub ( crate ) source_index : u32 ,
2433 indent : u8 ,
2534 line : u32 ,
2635 col : u32 ,
27- pub minify : bool ,
28- pub targets : Option < Browsers > ,
36+ pub ( crate ) minify : bool ,
37+ pub ( crate ) targets : Option < Browsers > ,
2938 /// Vendor prefix override. When non-empty, it overrides
3039 /// the vendor prefix of whatever is being printed.
31- pub vendor_prefix : VendorPrefix ,
32- pub in_calc : bool ,
33- pub css_module : Option < CssModule < ' a > > ,
34- pub dependencies : Option < & ' a mut Vec < Dependency > > ,
35- pub pseudo_classes : Option < PseudoClasses < ' a > > ,
40+ pub ( crate ) vendor_prefix : VendorPrefix ,
41+ pub ( crate ) in_calc : bool ,
42+ pub ( crate ) css_module : Option < CssModule < ' a > > ,
43+ pub ( crate ) dependencies : Option < Vec < Dependency > > ,
44+ pub ( crate ) pseudo_classes : Option < PseudoClasses < ' a > > ,
3645}
3746
3847impl < ' a , W : std:: fmt:: Write + Sized > Printer < ' a , W > {
39- pub fn new (
40- dest : & ' a mut W ,
41- source_map : Option < & ' a mut SourceMap > ,
42- minify : bool ,
43- targets : Option < Browsers > ,
44- ) -> Printer < ' a , W > {
48+ pub fn new ( dest : & ' a mut W , options : PrinterOptions < ' a > ) -> Printer < ' a , W > {
4549 Printer {
4650 sources : None ,
4751 dest,
48- source_map,
52+ source_map : options . source_map ,
4953 source_index : 0 ,
5054 indent : 0 ,
5155 line : 0 ,
5256 col : 0 ,
53- minify,
54- targets,
57+ minify : options . minify ,
58+ targets : options . targets ,
5559 vendor_prefix : VendorPrefix :: empty ( ) ,
5660 in_calc : false ,
5761 css_module : None ,
58- dependencies : None ,
59- pseudo_classes : None ,
62+ dependencies : if options. analyze_dependencies {
63+ Some ( Vec :: new ( ) )
64+ } else {
65+ None
66+ } ,
67+ pseudo_classes : options. pseudo_classes ,
6068 }
6169 }
6270
0 commit comments