Reworked RGB to hex conversions.
authorGoalSmashers <jakub@goalsmashers.com>
Wed, 20 Mar 2013 07:30:18 +0000 (08:30 +0100)
committerGoalSmashers <jakub@goalsmashers.com>
Wed, 20 Mar 2013 07:30:18 +0000 (08:30 +0100)
lib/clean.js
test/unit-test.js

index 120f5c1..3288b4d 100644 (file)
@@ -170,14 +170,15 @@ var CleanCSS = {
     });
 
     // rgb to hex colors
-    replace(/rgb\s*\(([^\)]+)\)/g, function(match, color) {
-      var parts = color.split(',');
-      var encoded = '#';
-      for (var i = 0; i < 3; i++) {
-        var asHex = parseInt(parts[i], 10).toString(16);
-        encoded += asHex.length == 1 ? '0' + asHex : asHex;
-      }
-      return encoded;
+    replace(/rgb\((\d+),(\d+),(\d+)\)/g, function(match, red, green, blue) {
+      var redAsHex = parseInt(red, 10).toString(16);
+      var greenAsHex = parseInt(green, 10).toString(16);
+      var blueAsHex = parseInt(blue, 10).toString(16);
+
+      return '#' +
+        ((redAsHex.length == 1 ? '0' : '') + redAsHex) +
+        ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) +
+        ((blueAsHex.length == 1 ? '0' : '') + blueAsHex);
     });
 
     // long hex to short hex colors
index fc5fc3b..51fe9c3 100644 (file)
@@ -419,7 +419,7 @@ vows.describe('clean-units').addBatch({
   }),
   'colors': cssContext({
     'shorten rgb to standard hexadecimal format': [
-      'a{ color:rgb (5, 10, 15) }',
+      'a{ color:rgb(5, 10, 15) }',
       'a{color:#050a0f}'
     ],
     'skip rgba shortening': [