[Pkg-javascript-commits] [node-cssstyle] 28/39: fix rgb/rgba color parsing, added appropriate test cases for it

Wolfgang Borgert debacle at moszumanska.debian.org
Sat Sep 20 19:37:33 UTC 2014


This is an automated email from the git hooks/post-receive script.

debacle pushed a commit to branch master
in repository node-cssstyle.

commit ad4f76d635ef1646d5fb6a703a7815396e51e4ce
Author: Chad Walker <chad at chad-cat-lore-eddie.com>
Date:   Thu Dec 19 15:22:38 2013 -0600

    fix rgb/rgba color parsing, added appropriate test cases for it
    
    (cherry-picked from 0.3.x)
---
 lib/parsers.js | 24 +++++++++++++-----------
 package.json   |  2 +-
 tests/tests.js | 13 +++++++++++++
 3 files changed, 27 insertions(+), 12 deletions(-)

diff --git a/lib/parsers.js b/lib/parsers.js
index 4c60f93..a867b05 100644
--- a/lib/parsers.js
+++ b/lib/parsers.js
@@ -75,7 +75,7 @@ exports.valueType = function valueType(val) {
         if (parts.length !== 3) {
             return undefined;
         }
-        if (parts.every(percentRegEx.test.bind()) || parts.every(integerRegEx.test.bind())) {
+        if (parts.every(percentRegEx.test.bind(percentRegEx)) || parts.every(integerRegEx.test.bind(integerRegEx))) {
             return exports.TYPES.COLOR;
         }
         return undefined;
@@ -86,8 +86,10 @@ exports.valueType = function valueType(val) {
         if (parts.length !== 4) {
             return undefined;
         }
-        if (parts.every(percentRegEx.test.bind()) || parts.every(integerRegEx.test.bind())) {
-            return exports.TYPES.COLOR;
+        if (parts.slice(0, 3).every(percentRegEx.test.bind(percentRegEx)) || parts.every(integerRegEx.test.bind(integerRegEx))) {
+            if (numberRegEx.test(parts[3])) {
+                return exports.TYPES.COLOR;
+            }
         }
         return undefined;
     }
@@ -298,9 +300,9 @@ exports.parseColor = function parseColor(val) {
             return undefined;
         }
         if (parts.every(percentRegEx.test.bind(percentRegEx))) {
-            red = parseFloat(parts[0].substr(0, -1));
-            green = parseFloat(parts[1].substr(0, -1));
-            blue = parseFloat(parts[2].substr(0, -1));
+            red = Math.floor(parseFloat(parts[0].slice(0, -1)) * 255 / 100);
+            green = Math.floor(parseFloat(parts[1].slice(0, -1)) * 255 / 100);
+            blue = Math.floor(parseFloat(parts[2].slice(0, -1)) * 255 / 100);
         } else if (parts.every(integerRegEx.test.bind(integerRegEx))) {
             red = parseInt(parts[0], 10);
             green = parseInt(parts[1], 10);
@@ -320,12 +322,12 @@ exports.parseColor = function parseColor(val) {
         if (parts.length !== 4) {
             return undefined;
         }
-        if (parts.every(percentRegEx.test.bind(percentRegEx))) {
-            red = parseFloat(parts[0].substr(0, -1));
-            green = parseFloat(parts[1].substr(0, -1));
-            blue = parseFloat(parts[2].substr(0, -1));
+        if (parts.slice(0, 3).every(percentRegEx.test.bind(percentRegEx))) {
+            red = Math.floor(parseFloat(parts[0].slice(0, -1)) * 255 / 100);
+            green = Math.floor(parseFloat(parts[1].slice(0, -1)) * 255 / 100);
+            blue = Math.floor(parseFloat(parts[2].slice(0, -1)) * 255 / 100);
             alpha = parseFloat(parts[3]);
-        } else if (parts.every(integerRegEx.test.bind(integerRegEx))) {
+        } else if (parts.slice(0, 3).every(integerRegEx.test.bind(integerRegEx))) {
             red = parseInt(parts[0], 10);
             green = parseInt(parts[1], 10);
             blue = parseInt(parts[2], 10);
diff --git a/package.json b/package.json
index 36f3e13..f20b01b 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
     "name": "cssstyle",
     "description": "CSSStyleDeclaration Object Model implementation",
     "keywords": ["CSS", "CSSStyleDeclaration", "StyleSheet"],
-    "version": "0.2.7",
+    "version": "0.2.8",
     "homepage": "https://github.com/chad3814/CSSStyleDeclaration",
     "maintainers": [{
         "name": "Chad Walker",
diff --git a/tests/tests.js b/tests/tests.js
index 03b6173..b482176 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -158,5 +158,18 @@ module.exports = {
         test.ok(2 === style.length, 'length is not 2');
         test.ok('clear: both; clip: rect(0px, 3em, 2pt, 50%);' === style.cssText, 'cssText is not "clear: both; clip: rect(0px, 3em, 2pt, 50%);"');
         test.done();
+    },
+    'Test colors': function (test) {
+        var style = new cssstyle.CSSStyleDeclaration();
+        test.expect(4);
+        style.color = 'rgba(0,0,0,0)';
+        test.ok('rgba(0, 0, 0, 0)' === style.color, 'color is not rgba(0, 0, 0, 0)');
+        style.color = 'rgba(5%, 10%, 20%, 0.4)';
+        test.ok('rgba(12, 25, 51, 0.4)' === style.color, 'color is not rgba(12, 25, 51, 0.4)');
+        style.color = 'rgb(33%, 34%, 33%)';
+        test.ok('rgb(84, 86, 84)' === style.color, 'color is not rgb(84, 86, 84)');
+        style.color = 'rgba(300, 200, 100, 1.5)';
+        test.ok('rgb(255, 200, 100)' === style.color, 'color is not rgb(255, 200, 100) ' + style.color);
+        test.done();
     }
 };

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-cssstyle.git



More information about the Pkg-javascript-commits mailing list