ruby-clean-css 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. data/.gitmodules +3 -0
  2. data/EXAMPLE.md +25 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +30 -0
  5. data/LICENSE +19 -0
  6. data/README.md +106 -0
  7. data/lib/javascript/clean-css/.gitignore +4 -0
  8. data/lib/javascript/clean-css/.jshintignore +3 -0
  9. data/lib/javascript/clean-css/.jshintrc +14 -0
  10. data/lib/javascript/clean-css/.travis.yml +11 -0
  11. data/lib/javascript/clean-css/History.md +556 -0
  12. data/lib/javascript/clean-css/LICENSE +19 -0
  13. data/lib/javascript/clean-css/README.md +218 -0
  14. data/lib/javascript/clean-css/bin/cleancss +157 -0
  15. data/lib/javascript/clean-css/index.js +1 -0
  16. data/lib/javascript/clean-css/lib/clean.js +426 -0
  17. data/lib/javascript/clean-css/lib/colors/hsl-to-hex.js +64 -0
  18. data/lib/javascript/clean-css/lib/colors/long-to-short-hex.js +12 -0
  19. data/lib/javascript/clean-css/lib/colors/rgb-to-hex.js +14 -0
  20. data/lib/javascript/clean-css/lib/colors/shortener.js +174 -0
  21. data/lib/javascript/clean-css/lib/images/url-rebase.js +32 -0
  22. data/lib/javascript/clean-css/lib/images/url-rewriter.js +60 -0
  23. data/lib/javascript/clean-css/lib/imports/inliner.js +319 -0
  24. data/lib/javascript/clean-css/lib/properties/optimizer.js +276 -0
  25. data/lib/javascript/clean-css/lib/properties/override-compactor.js +116 -0
  26. data/lib/javascript/clean-css/lib/properties/processable.js +859 -0
  27. data/lib/javascript/clean-css/lib/properties/scanner.js +20 -0
  28. data/lib/javascript/clean-css/lib/properties/shorthand-compactor.js +244 -0
  29. data/lib/javascript/clean-css/lib/properties/token.js +184 -0
  30. data/lib/javascript/clean-css/lib/properties/validator.js +140 -0
  31. data/lib/javascript/clean-css/lib/selectors/empty-removal.js +30 -0
  32. data/lib/javascript/clean-css/lib/selectors/optimizer.js +341 -0
  33. data/lib/javascript/clean-css/lib/selectors/tokenizer.js +168 -0
  34. data/lib/javascript/clean-css/lib/text/comments.js +83 -0
  35. data/lib/javascript/clean-css/lib/text/escape-store.js +32 -0
  36. data/lib/javascript/clean-css/lib/text/expressions.js +73 -0
  37. data/lib/javascript/clean-css/lib/text/free.js +26 -0
  38. data/lib/javascript/clean-css/lib/text/name-quotes.js +37 -0
  39. data/lib/javascript/clean-css/lib/text/quote-scanner.js +91 -0
  40. data/lib/javascript/clean-css/lib/text/splitter.js +35 -0
  41. data/lib/javascript/clean-css/lib/text/urls.js +41 -0
  42. data/lib/javascript/clean-css/package.json +50 -0
  43. data/lib/javascript/clean-css/test/batch-test.js +56 -0
  44. data/lib/javascript/clean-css/test/bench.js +11 -0
  45. data/lib/javascript/clean-css/test/binary-test.js +323 -0
  46. data/lib/javascript/clean-css/test/data-bench/_partial.css +1 -0
  47. data/lib/javascript/clean-css/test/data-bench/complex.css +4 -0
  48. data/lib/javascript/clean-css/test/data/129-assets/assets/ui.css +2 -0
  49. data/lib/javascript/clean-css/test/data/129-assets/components/bootstrap/css/bootstrap.css +3 -0
  50. data/lib/javascript/clean-css/test/data/129-assets/components/bootstrap/images/glyphs.gif +0 -0
  51. data/lib/javascript/clean-css/test/data/129-assets/components/jquery-ui/css/style.css +6 -0
  52. data/lib/javascript/clean-css/test/data/129-assets/components/jquery-ui/images/next.gif +0 -0
  53. data/lib/javascript/clean-css/test/data/129-assets/components/jquery-ui/images/prev.gif +0 -0
  54. data/lib/javascript/clean-css/test/data/960-min.css +125 -0
  55. data/lib/javascript/clean-css/test/data/960.css +602 -0
  56. data/lib/javascript/clean-css/test/data/big-min.css +2984 -0
  57. data/lib/javascript/clean-css/test/data/big.css +13794 -0
  58. data/lib/javascript/clean-css/test/data/blueprint-min.css +245 -0
  59. data/lib/javascript/clean-css/test/data/blueprint.css +556 -0
  60. data/lib/javascript/clean-css/test/data/charset-mixed-with-fonts-min.css +3 -0
  61. data/lib/javascript/clean-css/test/data/charset-mixed-with-fonts.css +14 -0
  62. data/lib/javascript/clean-css/test/data/font-awesome-ie7-min.css +392 -0
  63. data/lib/javascript/clean-css/test/data/font-awesome-ie7.css +1203 -0
  64. data/lib/javascript/clean-css/test/data/font-awesome-min.css +319 -0
  65. data/lib/javascript/clean-css/test/data/font-awesome.css +540 -0
  66. data/lib/javascript/clean-css/test/data/imports-min.css +5 -0
  67. data/lib/javascript/clean-css/test/data/imports.css +4 -0
  68. data/lib/javascript/clean-css/test/data/issue-117-snippet-min.css +3 -0
  69. data/lib/javascript/clean-css/test/data/issue-117-snippet.css +19 -0
  70. data/lib/javascript/clean-css/test/data/issue-159-snippet-min.css +7 -0
  71. data/lib/javascript/clean-css/test/data/issue-159-snippet.css +7 -0
  72. data/lib/javascript/clean-css/test/data/issue-192-min.css +1 -0
  73. data/lib/javascript/clean-css/test/data/issue-192.css +8 -0
  74. data/lib/javascript/clean-css/test/data/issue-198-min.css +3 -0
  75. data/lib/javascript/clean-css/test/data/issue-198.css +4 -0
  76. data/lib/javascript/clean-css/test/data/issue-232-min.css +2 -0
  77. data/lib/javascript/clean-css/test/data/issue-232.css +17 -0
  78. data/lib/javascript/clean-css/test/data/issue-241-min.css +2 -0
  79. data/lib/javascript/clean-css/test/data/issue-241.css +2 -0
  80. data/lib/javascript/clean-css/test/data/issue-304-min.css +1 -0
  81. data/lib/javascript/clean-css/test/data/issue-304.css +4 -0
  82. data/lib/javascript/clean-css/test/data/issue-305-min.css +1 -0
  83. data/lib/javascript/clean-css/test/data/issue-305.css +3 -0
  84. data/lib/javascript/clean-css/test/data/issue-308-min.css +1 -0
  85. data/lib/javascript/clean-css/test/data/issue-308.css +5 -0
  86. data/lib/javascript/clean-css/test/data/issue-312-min.css +1 -0
  87. data/lib/javascript/clean-css/test/data/issue-312.css +7 -0
  88. data/lib/javascript/clean-css/test/data/issue-337-min.css +1 -0
  89. data/lib/javascript/clean-css/test/data/issue-337.css +4 -0
  90. data/lib/javascript/clean-css/test/data/line-breaks-in-attributes-min.css +2 -0
  91. data/lib/javascript/clean-css/test/data/line-breaks-in-attributes.css +8 -0
  92. data/lib/javascript/clean-css/test/data/partials-absolute/base.css +3 -0
  93. data/lib/javascript/clean-css/test/data/partials-absolute/base2.css +1 -0
  94. data/lib/javascript/clean-css/test/data/partials-absolute/extra/sub.css +3 -0
  95. data/lib/javascript/clean-css/test/data/partials-relative/base.css +3 -0
  96. data/lib/javascript/clean-css/test/data/partials-relative/extra/included.css +1 -0
  97. data/lib/javascript/clean-css/test/data/partials/comment.css +2 -0
  98. data/lib/javascript/clean-css/test/data/partials/extra/down.gif +0 -0
  99. data/lib/javascript/clean-css/test/data/partials/extra/four.css +3 -0
  100. data/lib/javascript/clean-css/test/data/partials/extra/three.css +1 -0
  101. data/lib/javascript/clean-css/test/data/partials/five.css +1 -0
  102. data/lib/javascript/clean-css/test/data/partials/four.css +1 -0
  103. data/lib/javascript/clean-css/test/data/partials/one.css +1 -0
  104. data/lib/javascript/clean-css/test/data/partials/three.css +1 -0
  105. data/lib/javascript/clean-css/test/data/partials/two.css +5 -0
  106. data/lib/javascript/clean-css/test/data/reset-min.css +12 -0
  107. data/lib/javascript/clean-css/test/data/reset.css +64 -0
  108. data/lib/javascript/clean-css/test/data/sample1-min.css +4 -0
  109. data/lib/javascript/clean-css/test/data/sample1.css +12 -0
  110. data/lib/javascript/clean-css/test/data/unsupported/selectors-ie7.css +20 -0
  111. data/lib/javascript/clean-css/test/data/unsupported/selectors-ie8.css +17 -0
  112. data/lib/javascript/clean-css/test/module-test.js +185 -0
  113. data/lib/javascript/clean-css/test/protocol-imports-test.js +409 -0
  114. data/lib/javascript/clean-css/test/text/splitter-test.js +20 -0
  115. data/lib/javascript/clean-css/test/unit-test.js +2071 -0
  116. data/lib/ruby-clean-css.rb +6 -0
  117. data/lib/ruby-clean-css/compressor.rb +142 -0
  118. data/lib/ruby-clean-css/exports.rb +258 -0
  119. data/lib/ruby-clean-css/railtie.rb +27 -0
  120. data/lib/ruby-clean-css/sprockets.rb +19 -0
  121. data/lib/ruby-clean-css/version.rb +5 -0
  122. data/ruby-clean-css.gemspec +30 -0
  123. data/test/test_compressor.rb +84 -0
  124. metadata +203 -0
@@ -0,0 +1,3 @@
1
+ [submodule "lib/javascript/clean-css"]
2
+ path = lib/javascript/clean-css
3
+ url = https://github.com/GoalSmashers/clean-css.git
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #### If you wanted to create a Ruby script that took raw CSS from STDIN and
4
+ #### emitted the minified result to STDOUT, here's how you might do it. (Errors
5
+ #### and warnings are sent to STDERR.)
6
+
7
+ require 'ruby-clean-css'
8
+
9
+ begin
10
+ compressor = RubyCleanCSS::Compressor.new
11
+ compressor.compress(ARGV[0] || ARGF.read)
12
+ rescue => e
13
+ STDERR.puts("FAILED: #{e.inspect}")
14
+ STDERR.puts(e.backtrace.join("\n") + "\n")
15
+ ensure
16
+ out = compressor.last_result
17
+ STDERR.puts(out[:errors].join("\n")) if out[:errors].any?
18
+ STDERR.puts(out[:warnings].join("\n")) if out[:warnings].any?
19
+ STDOUT.puts(out[:min])
20
+ end
21
+
22
+
23
+ #### This example itself is runnable. For example, try:
24
+ ####
25
+ #### cat raw.css | ruby EXAMPLE.md > min.css
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify dependencies in ruby-clean-css.gemspec!
4
+ gemspec
@@ -0,0 +1,30 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ruby-clean-css (0.0.2)
5
+ commonjs
6
+ therubyracer
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ addressable (2.3.6)
12
+ commonjs (0.2.7)
13
+ crack (0.4.2)
14
+ safe_yaml (~> 1.0.0)
15
+ libv8 (3.16.14.3)
16
+ ref (1.0.5)
17
+ safe_yaml (1.0.3)
18
+ therubyracer (0.12.1)
19
+ libv8 (~> 3.16.14.0)
20
+ ref
21
+ webmock (1.18.0)
22
+ addressable (>= 2.3.6)
23
+ crack (>= 0.3.2)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ ruby-clean-css!
30
+ webmock
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2014 OverDrive, Inc.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is furnished
8
+ to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
15
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
17
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19
+ DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,106 @@
1
+ # Ruby-Clean-CSS compressor
2
+
3
+ This gem provides a Ruby interface to the
4
+ [Clean-CSS](https://github.com/GoalSmashers/clean-css) Node library for
5
+ minifying CSS files.
6
+
7
+ Ruby-Clean-CSS provides much more modern and compatible minification of
8
+ stylesheets than the old [YUI
9
+ compressor](https://github.com/sstephenson/ruby-yui-compressor) (which was
10
+ [discontinued](http://www.yuiblog.com/blog/2012/10/16/state-of-yui-compressor)
11
+ by Yahoo in 2012).
12
+
13
+
14
+ ## Usage
15
+
16
+ You can use this library with Rails, or with Sprockets in non-Rails projects,
17
+ or simply as a standalone library.
18
+
19
+
20
+ ### As a plain Ruby library:
21
+
22
+ Here's the simplest thing that could possibly work:
23
+
24
+ >> require 'ruby-clean-css'
25
+ >> RubyCleanCSS::Compressor.new.compress('a { color: chartreuse; }')
26
+ => "a{color:#7fff00}"
27
+
28
+
29
+ ### With Sprockets:
30
+
31
+ You can register the Compressor as Sprocket's default CSS compressor like this:
32
+
33
+ require 'ruby-clean-css'
34
+ require 'ruby-clean-css/sprockets'
35
+ RubyCleanCSS::Sprockets.register(sprockets_env)
36
+
37
+
38
+ ### With Rails 3 or Rails 4:
39
+
40
+ Just add this gem to the `:assets` group of your `Gemfile`. Ruby-Clean-CSS
41
+ will automatically become the default compressor for CSS files.
42
+
43
+ If you prefer, you can make it explicit in `config/environments/production.rb`:
44
+
45
+ config.assets.css_compressor = :cleancss
46
+
47
+ Alternatively, if you want to customize the compressor with options,
48
+ you can assign an instance of the compressor to that setting:
49
+
50
+ config.assets.css_compressor = RubyCleanCSS::Compressor.new(
51
+ rebase_urls: false,
52
+ keep_breaks: true
53
+ )
54
+
55
+
56
+ ## Options
57
+
58
+ This library supports the following [Clean-CSS
59
+ options](https://github.com/GoalSmashers/clean-css#how-to-use-clean-css-programmatically):
60
+
61
+ - `keep_special_comments` - A "special comment" is one that begins with `/*!`.
62
+ You can keep them all with `:all`, just the first with `:first`, or
63
+ remove them all with `:none`. The default is `:all`.
64
+ - `keep_breaks` - By default, all linebreaks are stripped. Set to `true` to
65
+ retain them.
66
+ - `root` - This is the path used to resolve absolute `@import` rules and rebase
67
+ relative URLS. A string. Defaults to the present working directory.
68
+ - `relative_to` - This path is used to resovle relative `@import` rules and
69
+ URLs. A string. No default.
70
+ - `process_import` - By default, stylesheets included via `@import` are fetched
71
+ and minified inline. Set to false to retain `@import` lines unmodified.
72
+ - `rebase_urls` - By default, all URLs are rebased to the root. Set to `false`
73
+ to prevent rebasing.
74
+ - `advanced` - By default, Clean-CSS applies some advanced optimizations,
75
+ like selector and property merging, reduction, etc). Set to `false` to
76
+ prevent these optimizations.
77
+ - `rounding_precision` - The rounding precision on measurements in your CSS.
78
+ An integer, defaulting to `2`.
79
+ - `compatibility` - Use this to force Clean-CSS to be compatible with `ie7`
80
+ or `ie8`. Default is neither. Supply as a symbol (`:ie7`) or
81
+ string (`'ie7'`).
82
+
83
+ The following options are not yet supported by this library:
84
+
85
+ - `benchmark`
86
+ - `debug`
87
+
88
+ In keeping with the Node library's interface, there are some synonyms available:
89
+
90
+ - `:no_rebase => true` is the same as `:rebase_urls => false`.
91
+ - `:no_advanced => true` is the same as `:advanced => false`.
92
+ - `:keep_special_comments` has an alternative syntax: `'*'` means `:all`,
93
+ `1` means `:first` and `0` means `:none`.
94
+
95
+
96
+ ## Contributing
97
+
98
+ Pull requests are welcome. Please supply a test case with your PR. You
99
+ typically run tests like this:
100
+
101
+ bundle exec ruby test/test_compressor.rb
102
+
103
+ ## License
104
+
105
+ Ruby-Clean-CSS is released under the [MIT
106
+ Licence](https://github.com/joseph/ruby-clean-css/blob/master/LICENSE).
@@ -0,0 +1,4 @@
1
+ .DS_Store
2
+ /cleancss-browser.js
3
+ /node_modules
4
+ /npm-debug.log
@@ -0,0 +1,3 @@
1
+ .git
2
+ node_modules
3
+ cleancss-browser.js
@@ -0,0 +1,14 @@
1
+ {
2
+ "camelcase": true,
3
+ "curly": false,
4
+ "eqeqeq": false,
5
+ "immed": true,
6
+ "indent": 2,
7
+ "noarg": true,
8
+ "node": true,
9
+ "plusplus": false,
10
+ "quotmark": "single",
11
+ "strict": false,
12
+ "undef": true,
13
+ "unused": true
14
+ }
@@ -0,0 +1,11 @@
1
+ language: node_js
2
+ node_js:
3
+ - '0.8'
4
+ - '0.10'
5
+ - '0.11'
6
+ matrix:
7
+ allow_failures:
8
+ - node_js: '0.11'
9
+ install:
10
+ - npm update npm -g
11
+ - npm install
@@ -0,0 +1,556 @@
1
+ [2.2.13 / 2014-08-12](https://github.com/GoalSmashers/clean-css/compare/v2.2.12...v2.2.13)
2
+ ==================
3
+
4
+ * Fixed issue [#337](https://github.com/GoalSmashers/clean-css/issues/337) - handling component importance.
5
+
6
+ [2.2.12 / 2014-08-02](https://github.com/GoalSmashers/clean-css/compare/v2.2.11...v2.2.12)
7
+ ==================
8
+
9
+ * Fixed issue with tokenizer removing first selector after an unknown @ rule.
10
+ * Fixed issue [#329](https://github.com/GoalSmashers/clean-css/issues/329) - font shorthands incorrectly processed.
11
+ * Fixed issue [#332](https://github.com/GoalSmashers/clean-css/issues/332) - background shorthand with colors.
12
+ * Refixed issue [#325](https://github.com/GoalSmashers/clean-css/issues/325) - invalid charset declarations.
13
+
14
+ [2.2.11 / 2014-07-28](https://github.com/GoalSmashers/clean-css/compare/v2.2.10...v2.2.11)
15
+ ==================
16
+
17
+ * Fixed issue [#326](https://github.com/GoalSmashers/clean-css/issues/326) - background-size regression.
18
+
19
+ [2.2.10 / 2014-07-27](https://github.com/GoalSmashers/clean-css/compare/v2.2.9...v2.2.10)
20
+ ==================
21
+
22
+ * Improved performance of advanced mode validators.
23
+ * Fixed issue [#307](https://github.com/GoalSmashers/clean-css/issues/307) - background-color in muliple backgrounds.
24
+ * Fixed issue [#322](https://github.com/GoalSmashers/clean-css/issues/322) - adds background-size support.
25
+ * Fixed issue [#323](https://github.com/GoalSmashers/clean-css/issues/323) - stripping variable references.
26
+ * Fixed issue [#325](https://github.com/GoalSmashers/clean-css/issues/325) - removing invalid @charset declarations.
27
+
28
+ [2.2.9 / 2014-07-23](https://github.com/GoalSmashers/clean-css/compare/v2.2.8...v2.2.9)
29
+ ==================
30
+
31
+ * Adds `background` normalization according to W3C spec.
32
+ * Fixed issue [#316](https://github.com/GoalSmashers/clean-css/issues/316) - incorrect background processing.
33
+
34
+ [2.2.8 / 2014-07-14](https://github.com/GoalSmashers/clean-css/compare/v2.2.7...v2.2.8)
35
+ ==================
36
+
37
+ * Fixed issue [#313](https://github.com/GoalSmashers/clean-css/issues/313) - processing comment marks in urls.
38
+ * Fixed issue [#315](https://github.com/GoalSmashers/clean-css/issues/315) - rgba/hsla -> transparent in gradients.
39
+
40
+ [2.2.7 / 2014-07-10](https://github.com/GoalSmashers/clean-css/compare/v2.2.6...v2.2.7)
41
+ ==================
42
+
43
+ * Fixed issue [#304](https://github.com/GoalSmashers/clean-css/issues/304) - merging multiple backgrounds.
44
+ * Fixed issue [#312](https://github.com/GoalSmashers/clean-css/issues/312) - merging with mixed repeat.
45
+
46
+ [2.2.6 / 2014-07-05](https://github.com/GoalSmashers/clean-css/compare/v2.2.5...v2.2.6)
47
+ ==================
48
+
49
+ * Adds faster quote matching in QuoteScanner.
50
+ * Improves QuoteScanner to handle comments correctly.
51
+ * Fixed issue [#308](https://github.com/GoalSmashers/clean-css/issues/308) - parsing comments in quoted urls.
52
+ * Fixed issue [#311](https://github.com/GoalSmashers/clean-css/issues/311) - leading/trailing decimal points.
53
+
54
+ [2.2.5 / 2014-06-29](https://github.com/GoalSmashers/clean-css/compare/v2.2.4...v2.2.5)
55
+ ==================
56
+
57
+ * Adds removing extra spaces around / in border-radius.
58
+ * Adds replacing same horizontal & vertical value in border-radius.
59
+ * Fixed issue [#305](https://github.com/GoalSmashers/clean-css/issues/305) - allows width keywords in border-width.
60
+
61
+ [2.2.4 / 2014-06-27](https://github.com/GoalSmashers/clean-css/compare/v2.2.3...v2.2.4)
62
+ ==================
63
+
64
+ * Fixed issue [#301](https://github.com/GoalSmashers/clean-css/issues/301) - proper border radius processing.
65
+ * Fixed issue [#303](https://github.com/GoalSmashers/clean-css/issues/303) - correctly preserves viewport units.
66
+
67
+ [2.2.3 / 2014-06-24](https://github.com/GoalSmashers/clean-css/compare/v2.2.2...v2.2.3)
68
+ ==================
69
+
70
+ * Fixed issue [#302](https://github.com/GoalSmashers/clean-css/issues/302) - handling of outline-style: auto.
71
+
72
+ [2.2.2 / 2014-06-18](https://github.com/GoalSmashers/clean-css/compare/v2.2.1...v2.2.2)
73
+ ==================
74
+
75
+ * Fixed issue [#297](https://github.com/GoalSmashers/clean-css/issues/297) - box-shadow zeros minification.
76
+
77
+ [2.2.1 / 2014-06-14](https://github.com/GoalSmashers/clean-css/compare/v2.2.0...v2.2.1)
78
+ ==================
79
+
80
+ * Fixes new property optimizer for 'none' values.
81
+ * Fixed issue [#294](https://github.com/GoalSmashers/clean-css/issues/294) - space after rgba/hsla in IE<=11.
82
+
83
+ [2.2.0 / 2014-06-11](https://github.com/GoalSmashers/clean-css/compare/v2.1.8...v2.2.0)
84
+ ==================
85
+
86
+ * Adds a better algorithm for quotation marks' removal.
87
+ * Adds a better non-adjacent optimizer compatible with the upcoming new property optimizer.
88
+ * Adds minifying remote files directly from CLI.
89
+ * Adds `--rounding-precision` to control rounding precision.
90
+ * Moves quotation matching into a `QuoteScanner` class.
91
+ * Adds `npm run browserify` for creating embeddable version of clean-css.
92
+ * Fixed list-style-* advanced processing.
93
+ * Fixed issue [#134](https://github.com/GoalSmashers/clean-css/issues/134) - merges properties into shorthand form.
94
+ * Fixed issue [#164](https://github.com/GoalSmashers/clean-css/issues/164) - removes default values if not needed.
95
+ * Fixed issue [#168](https://github.com/GoalSmashers/clean-css/issues/168) - adds better property merging algorithm.
96
+ * Fixed issue [#173](https://github.com/GoalSmashers/clean-css/issues/173) - merges same properties if grouped.
97
+ * Fixed issue [#184](https://github.com/GoalSmashers/clean-css/issues/184) - uses `!important` for optimization opportunities.
98
+ * Fixed issue [#190](https://github.com/GoalSmashers/clean-css/issues/190) - uses shorthand to override another shorthand.
99
+ * Fixed issue [#197](https://github.com/GoalSmashers/clean-css/issues/197) - adds borders merging by understandability.
100
+ * Fixed issue [#210](https://github.com/GoalSmashers/clean-css/issues/210) - adds temporary workaround for aggressive merging.
101
+ * Fixed issue [#246](https://github.com/GoalSmashers/clean-css/issues/246) - removes IE hacks when not in compatibility mode.
102
+ * Fixed issue [#247](https://github.com/GoalSmashers/clean-css/issues/247) - removes deprecated `selectorsMergeMode` switch.
103
+ * Refixed issue [#250](https://github.com/GoalSmashers/clean-css/issues/250) - based on new quotation marks removal.
104
+ * Fixed issue [#257](https://github.com/GoalSmashers/clean-css/issues/257) - turns hsla/rgba to transparent if possible.
105
+ * Fixed issue [#265](https://github.com/GoalSmashers/clean-css/issues/265) - adds support for multiple input files.
106
+ * Fixed issue [#275](https://github.com/GoalSmashers/clean-css/issues/275) - handling transform properties.
107
+ * Fixed issue [#276](https://github.com/GoalSmashers/clean-css/issues/276) - corrects unicode handling.
108
+ * Fixed issue [#288](https://github.com/GoalSmashers/clean-css/issues/288) - adds smarter expression parsing.
109
+ * Fixed issue [#293](https://github.com/GoalSmashers/clean-css/issues/293) - handles escaped @ symbols in classnames and ids.
110
+
111
+ [2.1.8 / 2014-03-28](https://github.com/GoalSmashers/clean-css/compare/v2.1.7...v2.1.8)
112
+ ==================
113
+
114
+ * Fixed issue [#267](https://github.com/GoalSmashers/clean-css/issues/267) - incorrect non-adjacent selector merging.
115
+
116
+ [2.1.7 / 2014-03-24](https://github.com/GoalSmashers/clean-css/compare/v2.1.6...v2.1.7)
117
+ ==================
118
+
119
+ * Fixed issue [#264](https://github.com/GoalSmashers/clean-css/issues/264) - `@import` statements inside comments.
120
+
121
+ [2.1.6 / 2014-03-10](https://github.com/GoalSmashers/clean-css/compare/v2.1.5...v2.1.6)
122
+ ==================
123
+
124
+ * Fixed issue [#258](https://github.com/GoalSmashers/clean-css/issues/258) - wrong `@import` handling in `EmptyRemoval`.
125
+
126
+ [2.1.5 / 2014-03-07](https://github.com/GoalSmashers/clean-css/compare/v2.1.4...v2.1.5)
127
+ ==================
128
+
129
+ * Fixed issue [#255](https://github.com/GoalSmashers/clean-css/issues/255) - incorrect processing of a trailing `-0`.
130
+
131
+ [2.1.4 / 2014-03-01](https://github.com/GoalSmashers/clean-css/compare/v2.1.3...v2.1.4)
132
+ ==================
133
+
134
+ * Fixed issue [#250](https://github.com/GoalSmashers/clean-css/issues/250) - correctly handle JSON data in quotations.
135
+
136
+ [2.1.3 / 2014-02-26](https://github.com/GoalSmashers/clean-css/compare/v2.1.2...v2.1.3)
137
+ ==================
138
+
139
+ * Fixed issue [#248](https://github.com/GoalSmashers/clean-css/issues/248) - incorrect merging for vendor selectors.
140
+
141
+ [2.1.2 / 2014-02-25](https://github.com/GoalSmashers/clean-css/compare/v2.1.1...v2.1.2)
142
+ ==================
143
+
144
+ * Fixed issue [#245](https://github.com/GoalSmashers/clean-css/issues/245) - incorrect handling of backslash IE hack.
145
+
146
+ [2.1.1 / 2014-02-18](https://github.com/GoalSmashers/clean-css/compare/v2.1.0...v2.1.1)
147
+ ==================
148
+
149
+ * Adds faster selectors processing in advanced optimizer.
150
+ * Fixed issue [#241](https://github.com/GoalSmashers/clean-css/issues/241) - incorrect handling of `:not()` selectors.
151
+
152
+ [2.1.0 / 2014-02-13](https://github.com/GoalSmashers/clean-css/compare/v2.0.8...v2.1.0)
153
+ ==================
154
+
155
+ * Adds an optional callback to minify method.
156
+ * Deprecates `--selectors-merge-mode` / `selectorsMergeMode` in favor to `--compatibility` / `compatibility`.
157
+ * Fixes debug mode stats for stylesheets using `@import` statements.
158
+ * Skips empty removal if advanced processing is enabled.
159
+ * Fixed issue [#85](https://github.com/GoalSmashers/clean-css/issues/85) - resolving protocol `@import`s.
160
+ * Fixed issue [#160](https://github.com/GoalSmashers/clean-css/issues/160) - re-runs optimizer until a clean pass.
161
+ * Fixed issue [#161](https://github.com/GoalSmashers/clean-css/issues/161) - improves tokenizer performance.
162
+ * Fixed issue [#163](https://github.com/GoalSmashers/clean-css/issues/163) - round pixels to 2nd decimal place.
163
+ * Fixed issue [#165](https://github.com/GoalSmashers/clean-css/issues/165) - extra space after trailing parenthesis.
164
+ * Fixed issue [#186](https://github.com/GoalSmashers/clean-css/issues/186) - strip unit from `0rem`.
165
+ * Fixed issue [#207](https://github.com/GoalSmashers/clean-css/issues/207) - bug in parsing protocol `@import`s.
166
+ * Fixed issue [#213](https://github.com/GoalSmashers/clean-css/issues/213) - faster rgb to hex transforms.
167
+ * Fixed issue [#215](https://github.com/GoalSmashers/clean-css/issues/215) - leading zeros in numerical values.
168
+ * Fixed issue [#217](https://github.com/GoalSmashers/clean-css/issues/217) - whitespace inside attribute selectors and urls.
169
+ * Fixed issue [#218](https://github.com/GoalSmashers/clean-css/issues/218) - `@import` statements cleanup.
170
+ * Fixed issue [#220](https://github.com/GoalSmashers/clean-css/issues/220) - selector between comments.
171
+ * Fixed issue [#223](https://github.com/GoalSmashers/clean-css/issues/223) - two-pass adjacent selectors merging.
172
+ * Fixed issue [#226](https://github.com/GoalSmashers/clean-css/issues/226) - don't minify `border:none` to `border:0`.
173
+ * Fixed issue [#229](https://github.com/GoalSmashers/clean-css/issues/229) - improved processing of fraction numbers.
174
+ * Fixed issue [#230](https://github.com/GoalSmashers/clean-css/issues/230) - better handling of zero values.
175
+ * Fixed issue [#235](https://github.com/GoalSmashers/clean-css/issues/235) - IE7 compatibility mode.
176
+ * Fixed issue [#236](https://github.com/GoalSmashers/clean-css/issues/236) - incorrect rebasing with nested `import`s.
177
+
178
+ [2.0.8 / 2014-02-07](https://github.com/GoalSmashers/clean-css/compare/v2.0.7...v2.0.8)
179
+ ==================
180
+
181
+ * Fixed issue [#232](https://github.com/GoalSmashers/clean-css/issues/232) - edge case in non-adjacent selectors merging.
182
+
183
+ [2.0.7 / 2014-01-16](https://github.com/GoalSmashers/clean-css/compare/v2.0.6...v2.0.7)
184
+ ==================
185
+
186
+ * Fixed issue [#208](https://github.com/GoalSmashers/clean-css/issues/208) - don't swallow @page and @viewport.
187
+
188
+ [2.0.6 / 2014-01-04](https://github.com/GoalSmashers/clean-css/compare/v2.0.5...v2.0.6)
189
+ ==================
190
+
191
+ * Fixed issue [#198](https://github.com/GoalSmashers/clean-css/issues/198) - process comments and `@import`s correctly.
192
+ * Fixed issue [#205](https://github.com/GoalSmashers/clean-css/issues/205) - freeze on broken @import declaration.
193
+
194
+ [2.0.5 / 2014-01-03](https://github.com/GoalSmashers/clean-css/compare/v2.0.4...v2.0.5)
195
+ ==================
196
+
197
+ * Fixed issue [#199](https://github.com/GoalSmashers/clean-css/issues/199) - keep line breaks with no advanced optimizations.
198
+ * Fixed issue [#203](https://github.com/GoalSmashers/clean-css/issues/203) - Buffer as a first argument to minify method.
199
+
200
+ [2.0.4 / 2013-12-19](https://github.com/GoalSmashers/clean-css/compare/v2.0.3...v2.0.4)
201
+ ==================
202
+
203
+ * Fixed issue [#193](https://github.com/GoalSmashers/clean-css/issues/193) - HSL color space normalization.
204
+
205
+ [2.0.3 / 2013-12-18](https://github.com/GoalSmashers/clean-css/compare/v2.0.2...v2.0.3)
206
+ ==================
207
+
208
+ * Fixed issue [#191](https://github.com/GoalSmashers/clean-css/issues/191) - leading numbers in font/animation names.
209
+ * Fixed issue [#192](https://github.com/GoalSmashers/clean-css/issues/192) - many `@import`s inside a comment.
210
+
211
+ [2.0.2 / 2013-11-18](https://github.com/GoalSmashers/clean-css/compare/v2.0.1...v2.0.2)
212
+ ==================
213
+
214
+ * Fixed issue [#177](https://github.com/GoalSmashers/clean-css/issues/177) - process broken content correctly.
215
+
216
+ [2.0.1 / 2013-11-14](https://github.com/GoalSmashers/clean-css/compare/v2.0.0...v2.0.1)
217
+ ==================
218
+
219
+ * Fixed issue [#176](https://github.com/GoalSmashers/clean-css/issues/176) - hangs on `undefined` keyword.
220
+
221
+ [2.0.0 / 2013-11-04](https://github.com/GoalSmashers/clean-css/compare/v1.1.7...v2.0.0)
222
+ ==================
223
+
224
+ * Adds simplified and more advanced text escaping / restoring via `EscapeStore` class.
225
+ * Adds simplified and much faster empty elements removal.
226
+ * Adds missing `@import` processing to our benchmark (run via `npm run bench`).
227
+ * Adds CSS tokenizer which will make it possible to optimize content by reordering and/or merging selectors.
228
+ * Adds basic optimizer removing duplicate selectors from a list.
229
+ * Adds merging duplicate properties within a single selector's body.
230
+ * Adds merging adjacent selectors within a scope (single and multiple ones).
231
+ * Changes behavior of `--keep-line-breaks`/`keepBreaks` option to keep breaks after trailing braces only.
232
+ * Makes all multiple selectors ordered alphabetically (aids merging).
233
+ * Adds property overriding so more coarse properties override more granular ones.
234
+ * Adds reducing non-adjacent selectors.
235
+ * Adds `--skip-advanced`/`noAdvanced` switch to disable advanced optimizations.
236
+ * Adds reducing non-adjacent selectors when overridden by more complex selectors.
237
+ * Fixed issue [#138](https://github.com/GoalSmashers/clean-css/issues/138) - makes CleanCSS interface OO.
238
+ * Fixed issue [#139](https://github.com/GoalSmashers/clean-css/issues/138) - consistent error & warning handling.
239
+ * Fixed issue [#145](https://github.com/GoalSmashers/clean-css/issues/145) - debug mode in library too.
240
+ * Fixed issue [#157](https://github.com/GoalSmashers/clean-css/issues/157) - gets rid of `removeEmpty` option.
241
+ * Fixed issue [#159](https://github.com/GoalSmashers/clean-css/issues/159) - escaped quotes inside content.
242
+ * Fixed issue [#162](https://github.com/GoalSmashers/clean-css/issues/162) - strip quotes from Base64 encoded URLs.
243
+ * Fixed issue [#166](https://github.com/GoalSmashers/clean-css/issues/166) - `debug` formatting in CLI
244
+ * Fixed issue [#167](https://github.com/GoalSmashers/clean-css/issues/167) - `background:transparent` minification.
245
+
246
+ [1.1.7 / 2013-10-28](https://github.com/GoalSmashers/clean-css/compare/v1.1.6...v1.1.7)
247
+ ==================
248
+
249
+ * Fixed issue [#156](https://github.com/GoalSmashers/clean-css/issues/156) - `@import`s inside comments.
250
+
251
+ [1.1.6 / 2013-10-26](https://github.com/GoalSmashers/clean-css/compare/v1.1.5...v1.1.6)
252
+ ==================
253
+
254
+ * Fixed issue [#155](https://github.com/GoalSmashers/clean-css/issues/155) - broken irregular CSS content.
255
+
256
+ [1.1.5 / 2013-10-24](https://github.com/GoalSmashers/clean-css/compare/v1.1.4...v1.1.5)
257
+ ==================
258
+
259
+ * Fixed issue [#153](https://github.com/GoalSmashers/clean-css/issues/153) - keepSpecialComments 0/1 as a string.
260
+
261
+ [1.1.4 / 2013-10-23](https://github.com/GoalSmashers/clean-css/compare/v1.1.3...v1.1.4)
262
+ ==================
263
+
264
+ * Fixed issue [#152](https://github.com/GoalSmashers/clean-css/issues/152) - adds an option to disable rebasing.
265
+
266
+ [1.1.3 / 2013-10-04](https://github.com/GoalSmashers/clean-css/compare/v1.1.2...v1.1.3)
267
+ ==================
268
+
269
+ * Fixed issue [#150](https://github.com/GoalSmashers/clean-css/issues/150) - minifying `background:none`.
270
+
271
+ [1.1.2 / 2013-09-29](https://github.com/GoalSmashers/clean-css/compare/v1.1.1...v1.1.2)
272
+ ==================
273
+
274
+ * Fixed issue [#149](https://github.com/GoalSmashers/clean-css/issues/149) - shorthand font property.
275
+
276
+ [1.1.1 / 2013-09-07](https://github.com/GoalSmashers/clean-css/compare/v1.1.0...v1.1.1)
277
+ ==================
278
+
279
+ * Fixed issue [#144](https://github.com/GoalSmashers/clean-css/issues/144) - skip URLs rebasing by default.
280
+
281
+ [1.1.0 / 2013-09-06](https://github.com/GoalSmashers/clean-css/compare/v1.0.12...v1.1.0)
282
+ ==================
283
+
284
+ * Renamed lib's `debug` option to `benchmark` when doing per-minification benchmarking.
285
+ * Added simplified comments processing & imports.
286
+ * Fixed issue [#43](https://github.com/GoalSmashers/clean-css/issues/43) - `--debug` switch for minification stats.
287
+ * Fixed issue [#65](https://github.com/GoalSmashers/clean-css/issues/65) - full color name / hex shortening.
288
+ * Fixed issue [#84](https://github.com/GoalSmashers/clean-css/issues/84) - support for `@import` with media queries.
289
+ * Fixed issue [#124](https://github.com/GoalSmashers/clean-css/issues/124) - raise error on broken imports.
290
+ * Fixed issue [#126](https://github.com/GoalSmashers/clean-css/issues/126) - proper CSS expressions handling.
291
+ * Fixed issue [#129](https://github.com/GoalSmashers/clean-css/issues/129) - rebasing imported URLs.
292
+ * Fixed issue [#130](https://github.com/GoalSmashers/clean-css/issues/130) - better code modularity.
293
+ * Fixed issue [#135](https://github.com/GoalSmashers/clean-css/issues/135) - require node.js 0.8+.
294
+
295
+ [1.0.12 / 2013-07-19](https://github.com/GoalSmashers/clean-css/compare/v1.0.11...v1.0.12)
296
+ ===================
297
+
298
+ * Fixed issue [#121](https://github.com/GoalSmashers/clean-css/issues/121) - ability to skip `@import` processing.
299
+
300
+ [1.0.11 / 2013-07-08](https://github.com/GoalSmashers/clean-css/compare/v1.0.10...v1.0.11)
301
+ ===================
302
+
303
+ * Fixed issue [#117](https://github.com/GoalSmashers/clean-css/issues/117) - line break escaping in comments.
304
+
305
+ [1.0.10 / 2013-06-13](https://github.com/GoalSmashers/clean-css/compare/v1.0.9...v1.0.10)
306
+ ===================
307
+
308
+ * Fixed issue [#114](https://github.com/GoalSmashers/clean-css/issues/114) - comments in imported stylesheets.
309
+
310
+ [1.0.9 / 2013-06-11](https://github.com/GoalSmashers/clean-css/compare/v1.0.8...v1.0.9)
311
+ ==================
312
+
313
+ * Fixed issue [#113](https://github.com/GoalSmashers/clean-css/issues/113) - `@import` in comments.
314
+
315
+ [1.0.8 / 2013-06-10](https://github.com/GoalSmashers/clean-css/compare/v1.0.7...v1.0.8)
316
+ ==================
317
+
318
+ * Fixed issue [#112](https://github.com/GoalSmashers/clean-css/issues/112) - reducing `box-shadow` zeros.
319
+
320
+ [1.0.7 / 2013-06-05](https://github.com/GoalSmashers/clean-css/compare/v1.0.6...v1.0.7)
321
+ ==================
322
+
323
+ * Support for `@import` URLs starting with `//`.
324
+ By [@petetak](https://github.com/petetak).
325
+
326
+ [1.0.6 / 2013-06-04](https://github.com/GoalSmashers/clean-css/compare/v1.0.5...v1.0.6)
327
+ ==================
328
+
329
+ * Fixed issue [#110](https://github.com/GoalSmashers/clean-css/issues/110) - data URIs in URLs.
330
+
331
+ [1.0.5 / 2013-05-26](https://github.com/GoalSmashers/clean-css/compare/v1.0.4...v1.0.5)
332
+ ==================
333
+
334
+ * Fixed issue [#107](https://github.com/GoalSmashers/clean-css/issues/107) - data URIs in imported stylesheets.
335
+
336
+ 1.0.4 / 2013-05-23
337
+ ==================
338
+
339
+ * Rewrite relative URLs in imported stylesheets.
340
+ By [@bluej100](https://github.com/bluej100).
341
+
342
+ 1.0.3 / 2013-05-20
343
+ ==================
344
+
345
+ * Support alternative `@import` syntax with file name not wrapped inside `url()` statement.
346
+ By [@bluej100](https://github.com/bluej100).
347
+
348
+ 1.0.2 / 2013-04-29
349
+ ==================
350
+
351
+ * Fixed issue [#97](https://github.com/GoalSmashers/clean-css/issues/97) - `--remove-empty` & FontAwesome.
352
+
353
+ 1.0.1 / 2013-04-08
354
+ ==================
355
+
356
+ * Do not pick up `bench` and `test` while building `npm` package.
357
+ By [@sindresorhus](https://https://github.com/sindresorhus).
358
+
359
+ 1.0.0 / 2013-03-30
360
+ ==================
361
+
362
+ * Fixed issue [#2](https://github.com/GoalSmashers/clean-css/issues/2) - resolving `@import` rules.
363
+ * Fixed issue [#44](https://github.com/GoalSmashers/clean-css/issues/44) - examples in `--help`.
364
+ * Fixed issue [#46](https://github.com/GoalSmashers/clean-css/issues/46) - preserving special characters in URLs and attributes.
365
+ * Fixed issue [#80](https://github.com/GoalSmashers/clean-css/issues/80) - quotation in multi line strings.
366
+ * Fixed issue [#83](https://github.com/GoalSmashers/clean-css/issues/83) - HSL to hex color conversions.
367
+ * Fixed issue [#86](https://github.com/GoalSmashers/clean-css/issues/86) - broken `@charset` replacing.
368
+ * Fixed issue [#88](https://github.com/GoalSmashers/clean-css/issues/88) - removes space in `! important`.
369
+ * Fixed issue [#92](https://github.com/GoalSmashers/clean-css/issues/92) - uppercase hex to short versions.
370
+
371
+ 0.10.2 / 2013-03-19
372
+ ===================
373
+
374
+ * Fixed issue [#79](https://github.com/GoalSmashers/clean-css/issues/79) - node.js 0.10.x compatibility.
375
+
376
+ 0.10.1 / 2013-02-14
377
+ ===================
378
+
379
+ * Fixed issue [#66](https://github.com/GoalSmashers/clean-css/issues/66) - line breaks without extra spaces should
380
+ be handled correctly.
381
+
382
+ 0.10.0 / 2013-02-09
383
+ ===================
384
+
385
+ * Switched from [optimist](https://github.com/substack/node-optimist) to
386
+ [commander](https://github.com/visionmedia/commander.js) for CLI processing.
387
+ * Changed long options from `--removeempty` to `--remove-empty` and from `--keeplinebreaks` to `--keep-line-breaks`.
388
+ * Fixed performance issue with replacing multiple `@charset` declarations and issue
389
+ with line break after `@charset` when using `keepLineBreaks` option. By [@rrjaime](https://github.com/rrjamie).
390
+ * Removed Makefile in favor to `npm run` commands (e.g. `make check` -> `npm run check`).
391
+ * Fixed issue [#47](https://github.com/GoalSmashers/clean-css/issues/47) - commandline issues on Windows.
392
+ * Fixed issue [#49](https://github.com/GoalSmashers/clean-css/issues/49) - remove empty selectors from media query.
393
+ * Fixed issue [#52](https://github.com/GoalSmashers/clean-css/issues/52) - strip fraction zeros if not needed.
394
+ * Fixed issue [#58](https://github.com/GoalSmashers/clean-css/issues/58) - remove colon where possible.
395
+ * Fixed issue [#59](https://github.com/GoalSmashers/clean-css/issues/59) - content property handling.
396
+
397
+ 0.9.1 / 2012-12-19
398
+ ==================
399
+
400
+ * Fixed issue [#37](https://github.com/GoalSmashers/clean-css/issues/37) - converting
401
+ `white` and other colors in class names (reported by [@malgorithms](https://github.com/malgorithms)).
402
+
403
+ 0.9.0 / 2012-12-15
404
+ ==================
405
+
406
+ * Added stripping quotation from font names (if possible).
407
+ * Added stripping quotation from `@keyframes` declaration, `animation` and
408
+ `animation-name` property.
409
+ * Added stripping quotations from attributes' value (e.g. `[data-target='x']`).
410
+ * Added better hex->name and name->hex color shortening.
411
+ * Added `font: normal` and `font: bold` shortening the same way as `font-weight` is.
412
+ * Refactored shorthand selectors and added `border-radius`, `border-style`
413
+ and `border-color` shortening.
414
+ * Added `margin`, `padding` and `border-width` shortening.
415
+ * Added removing line break after commas.
416
+ * Fixed removing whitespace inside media query definition.
417
+ * Added removing line breaks after a comma, so all declarations are one-liners now.
418
+ * Speed optimizations (~10% despite many new features).
419
+ * Added [JSHint](https://github.com/jshint/jshint/) validation rules via `make check`.
420
+
421
+ 0.8.3 / 2012-11-29
422
+ ==================
423
+
424
+ * Fixed HSL/HSLA colors processing.
425
+
426
+ 0.8.2 / 2012-10-31
427
+ ==================
428
+
429
+ * Fixed shortening hex colors and their relation to hashes in URLs.
430
+ * Cleanup by [@XhmikosR](https://github.com/XhmikosR).
431
+
432
+ 0.8.1 / 2012-10-28
433
+ ==================
434
+
435
+ * Added better zeros processing for `rect(...)` syntax (clip property).
436
+
437
+ 0.8.0 / 2012-10-21
438
+ ==================
439
+
440
+ * Added removing URLs quotation if possible.
441
+ * Rewrote breaks processing.
442
+ * Added `keepBreaks`/`-b` option to keep line breaks in the minimized file.
443
+ * Reformatted [lib/clean.js](/lib/clean.js) so it's easier to follow the rules.
444
+ * Minimized test data is now minimized with line breaks so it's easier to
445
+ compare the changes line by line.
446
+
447
+ 0.7.0 / 2012-10-14
448
+ ==================
449
+
450
+ * Added stripping special comments to CLI (`--s0` and `--s1` options).
451
+ * Added stripping special comments to programmatic interface
452
+ (`keepSpecialComments` option).
453
+
454
+ 0.6.0 / 2012-08-05
455
+ ==================
456
+
457
+ * Full Windows support with tests (./test.bat).
458
+
459
+ 0.5.0 / 2012-08-02
460
+ ==================
461
+
462
+ * Made path to vows local.
463
+ * Explicit node.js 0.6 requirement.
464
+
465
+ 0.4.2 / 2012-06-28
466
+ ==================
467
+
468
+ * Updated binary `-v` option (version).
469
+ * Updated binary to output help when no options given (but not in piped mode).
470
+ * Added binary tests.
471
+
472
+ 0.4.1 / 2012-06-10
473
+ ==================
474
+
475
+ * Fixed stateless mode where calling `CleanCSS#process` directly was giving
476
+ errors (reported by [@facelessuser](https://github.com/facelessuser)).
477
+
478
+ 0.4.0 / 2012-06-04
479
+ ==================
480
+
481
+ * Speed improvements up to 4x thanks to the rewrite of comments and CSS' content
482
+ processing.
483
+ * Stripping empty CSS tags is now optional (see [bin/cleancss](/bin/cleancss) for details).
484
+ * Improved debugging mode (see [test/bench.js](/test/bench.js))
485
+ * Added `make bench` for a one-pass benchmark.
486
+
487
+ 0.3.3 / 2012-05-27
488
+ ==================
489
+
490
+ * Fixed tests, [package.json](/package.json) for development, and regex
491
+ for removing empty declarations (thanks to [@vvo](https://github.com/vvo)).
492
+
493
+ 0.3.2 / 2012-01-17
494
+ ==================
495
+
496
+ * Fixed output method under node.js 0.6 which incorrectly tried to close
497
+ `process.stdout`.
498
+
499
+ 0.3.1 / 2011-12-16
500
+ ==================
501
+
502
+ * Fixed cleaning up `0 0 0 0` expressions.
503
+
504
+ 0.3.0 / 2011-11-29
505
+ ==================
506
+
507
+ * Clean-css requires node.js 0.4.0+ to run.
508
+ * Removed node.js's 0.2.x 'sys' package dependency
509
+ (thanks to [@jmalonzo](https://github.com/jmalonzo) for a patch).
510
+
511
+ 0.2.6 / 2011-11-27
512
+ ==================
513
+
514
+ * Fixed expanding `+` signs in `calc()` when mixed up with adjacent `+` selector.
515
+
516
+ 0.2.5 / 2011-11-27
517
+ ==================
518
+
519
+ * Fixed issue with cleaning up spaces inside `calc`/`-moz-calc` declarations
520
+ (thanks to [@cvan](https://github.com/cvan) for reporting it).
521
+ * Fixed converting `#f00` to `red` in borders and gradients.
522
+
523
+ 0.2.4 / 2011-05-25
524
+ ==================
525
+
526
+ * Fixed problem with expanding `none` to `0` in partial/full background
527
+ declarations.
528
+ * Fixed including clean-css library from binary (global to local).
529
+
530
+ 0.2.3 / 2011-04-18
531
+ ==================
532
+
533
+ * Fixed problem with optimizing IE filters.
534
+
535
+ 0.2.2 / 2011-04-17
536
+ ==================
537
+
538
+ * Fixed problem with space before color in `border` property.
539
+
540
+ 0.2.1 / 2011-03-19
541
+ ==================
542
+
543
+ * Added stripping space before `!important` keyword.
544
+ * Updated repository location and author information in [package.json](/package.json).
545
+
546
+ 0.2.0 / 2011-03-02
547
+ ==================
548
+
549
+ * Added options parsing via optimist.
550
+ * Changed code inclusion (thus the version bump).
551
+
552
+ 0.1.0 / 2011-02-27
553
+ ==================
554
+
555
+ * First version of clean-css library.
556
+ * Implemented all basic CSS transformations.