Minify minifies CSS data, it reads from r and writes to w.
(m *minify.M, w io.Writer, r io.Reader, params map[string]string)
| 136 | |
| 137 | // Minify minifies CSS data, it reads from r and writes to w. |
| 138 | func (o *Minifier) Minify(m *minify.M, w io.Writer, r io.Reader, params map[string]string) error { |
| 139 | tmp := &Minifier{} |
| 140 | *tmp = *o |
| 141 | o = tmp |
| 142 | |
| 143 | o.newPrecision = o.Precision |
| 144 | if o.newPrecision <= 0 || 15 < o.newPrecision { |
| 145 | o.newPrecision = 15 // minimum number of digits a double can represent exactly |
| 146 | } |
| 147 | if !o.Inline { |
| 148 | o.Inline = params != nil && params["inline"] == "1" |
| 149 | } |
| 150 | if o.Version <= 0 { |
| 151 | o.Version = 3 |
| 152 | } |
| 153 | |
| 154 | z := parse.NewInput(r) |
| 155 | defer z.Restore() |
| 156 | |
| 157 | c := &cssMinifier{ |
| 158 | m: m, |
| 159 | w: w, |
| 160 | p: css.NewParser(z, o.Inline), |
| 161 | o: o, |
| 162 | } |
| 163 | c.minifyGrammar() |
| 164 | |
| 165 | if _, err := w.Write(nil); err != nil { |
| 166 | return err |
| 167 | } |
| 168 | if c.p.Err() == io.EOF { |
| 169 | return nil |
| 170 | } |
| 171 | return c.p.Err() |
| 172 | } |
| 173 | |
| 174 | func (c *cssMinifier) minifyGrammar() { |
| 175 | semicolonQueued := false |