Enables 'by selector' advanced merging over media.
authorJakub Pawlowicz <contact@jakubpawlowicz.com>
Tue, 10 Feb 2015 20:47:48 +0000 (20:47 +0000)
committerJakub Pawlowicz <contact@jakubpawlowicz.com>
Tue, 10 Feb 2015 20:47:48 +0000 (20:47 +0000)
It works already for merging media blocks, so it's just a matter
of enabling it for 'by selector' merging.

lib/selectors/optimizers/advanced.js
test/integration-test.js

index b2e2836..d738f6b 100644 (file)
@@ -341,16 +341,11 @@ AdvancedOptimizer.prototype.mergeNonAdjacentBySelector = function (tokens) {
       var movedProperties = allProperties(movedToken);
 
       for (var k = movedPosition - 1; k > targetPosition; k--) {
-        if (tokens[k].isFlatBlock === false)
-          continue selectorIterator;
-
-        if (tokens[k].kind == 'selector') {
-          var traversedProperties = allProperties(tokens[k]);
+        var traversedProperties = allProperties(tokens[k]);
 
-          // traversed then moved as we move selectors towards the start
-          if (!canReorder(traversedProperties, movedProperties))
-            continue selectorIterator;
-        }
+        // traversed then moved as we move selectors towards the start
+        if (!canReorder(traversedProperties, movedProperties))
+          continue selectorIterator;
       }
 
       var joinAt = [movedToken.body.length];
index e4adadd..c1b1383 100644 (file)
@@ -1817,6 +1817,10 @@ title']{display:block}",
     'successive selectors': [
       'footer,header{top:1.25em;bottom:1.25em}header{top:2.5em}footer{bottom:2.5em}',
       'footer,header{top:1.25em;bottom:1.25em}header{top:2.5em}footer{bottom:2.5em}'
+    ],
+    'over a @media block': [
+      '.one{color:red;margin:0}@media{.two{font-weight:700}}.one{font-size:12px}',
+      '.one{color:red;margin:0;font-size:12px}@media{.two{font-weight:700}}'
     ]
   }),
   'rerun optimizers': cssContext({