Fixes #49 - removing empty selectors from media query.
authorGoalSmashers <jakub@goalsmashers.com>
Mon, 28 Jan 2013 18:02:28 +0000 (19:02 +0100)
committerGoalSmashers <jakub@goalsmashers.com>
Mon, 28 Jan 2013 18:02:28 +0000 (19:02 +0100)
lib/clean.js
test/unit-test.js

index e0a3e1d..0efcb9b 100644 (file)
@@ -273,9 +273,13 @@ var CleanCSS = {
       }
     });
 
-    // empty elements
-    if (options.removeEmpty)
-      replace(/[^\}]+?\{\}/g, '');
+    if (options.removeEmpty) {
+      // empty elements
+      replace(/[^\{\}]+\{\}/g, '');
+
+      // empty @media declarations
+      replace(/@media [^\{]+\{\}/g, '');
+    }
 
     // remove universal selector when not needed (*#id, *.class etc)
     replace(/\*([\.#:\[])/g, '$1');
index edd77d6..ea89020 100644 (file)
@@ -644,6 +644,14 @@ vows.describe('clean-units').addBatch({
     'just a semicolon': [
       'div { ; }',
       ''
+    ],
+    'inside @media': [
+      "@media screen { .test {} } .test1 { color: green; }",
+      ".test1{color:green}"
+    ],
+    'inside not empty @media': [
+      "@media screen { .test {} .some { display:none } }",
+      "@media screen{.some{display:none}}"
     ]
   }, { removeEmpty: true }),
   'skip empty elements': cssContext({