Added shortening same values in (padding|margin|border-width) - margin:1px 1px 1px...
authorGoalSmashers <jakub@goalsmashers.com>
Sat, 17 Nov 2012 22:50:23 +0000 (22:50 +0000)
committerGoalSmashers <jakub@goalsmashers.com>
Sat, 17 Nov 2012 22:50:23 +0000 (22:50 +0000)
lib/clean.js
test/unit-test.js

index 42560c1..f010cf7 100644 (file)
@@ -159,6 +159,14 @@ var CleanCSS = {
     replace(/:0 0 0 0([^\.])/g, ':0$1');
     replace(/([: ,=\-])0\.(\d)/g, '$1.$2');
 
+    // same values into one
+    replace(/(padding|margin|border\-width):([\d\w\.%]+) ([\d\w\.%]+) ([\d\w\.%]+) ([\d\w\.%]+)/g, function(match, property, size1, size2, size3, size4) {
+      if (size1 === size2 && size1 === size3 && size1 === size4)
+        return property + ":" + size1;
+      else
+        return match;
+    });
+
     // restore rect(...) zeros syntax for 4 zeros
     replace(/rect\(\s?0(\s|,)0[ ,]0[ ,]0\s?\)/g, 'rect(0$10$10$10)');
 
index 2e06285..193dec1 100644 (file)
@@ -264,6 +264,25 @@ vows.describe('clean-units').addBatch({
       'div{clip:rect(0 0 0 10px)}'
     ]
   }),
+  'shorthands': cssContext({
+    'padding - same values': [
+      'div{padding:1px 1px 1px 1px}',
+      'div{padding:1px}'
+    ],
+    'margin - same values': [
+      'div{margin:1% 1% 1% 1%}',
+      'div{margin:1%}'
+    ],
+    'border-width - same values': [
+      'div{border-width:1em 1em 1em 1em}',
+      'div{border-width:1em}'
+    ],
+    'different units': 'div{padding:1px 1em 1% 1rem}',
+    'fractions': [
+      'div{margin:.1em .1em .1em .1em}',
+      'div{margin:.1em}'
+    ]
+  }),
   'floats': cssContext({
     'strips zero in fractions': [
       'a{ margin-bottom: 0.5em}',