diff --git a/index.js b/index.js index f175c23..b98a278 100644 --- a/index.js +++ b/index.js @@ -52,8 +52,8 @@ cs.get.rgb = function (string) { const abbr = /^#([a-f\d]{3,4})$/i; const hex = /^#([a-f\d]{6})([a-f\d]{2})?$/i; - const rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/; - const per = /^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/; + const rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/; + const per = /^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/; const keyword = /^(\w+)$/; let rgb = [0, 0, 0, 1]; diff --git a/test.js b/test.js index e7f6cc6..405664c 100644 --- a/test.js +++ b/test.js @@ -49,6 +49,7 @@ assert.deepEqual(string.get('hwb(240deg, 100%, 50.5%)'), {model: 'hwb', value: [ assert.deepEqual(string.get('hsla(250, 100%, 50%, 50%)'), null); assert.deepEqual(string.get('hsl(250 100% 50% / 50%)'), null); assert.deepEqual(string.get('rgba(250, 100%, 50%, 50%)'), null); +assert.deepEqual(string.get('rgba(250 100% 50% 50%)'), null); assert.deepEqual(string.get('333333'), null); assert.strictEqual(string.get('#1'), null); assert.strictEqual(string.get('#f'), null); @@ -73,6 +74,7 @@ assert.deepEqual(string.get.hsl('hsl(+240, 100%, 50.5%)'), [240, 100, 50.5, 1]); assert.deepEqual(string.get.hsl('hsl(+240 100% 50.5%)'), [240, 100, 50.5, 1]); assert.deepEqual(string.get.rgb('rgba(200, +20, -233, -0.0)'), [200, 20, 0, 0]); assert.deepEqual(string.get.rgb('rgba(200 +20 -233 / -0.0)'), [200, 20, 0, 0]); +assert.deepEqual(string.get.rgb('rgba(200 +20 -233 -0.0)'), [200, 20, 0, 0]); assert.deepEqual(string.get.rgb('rgba(200, +20, -233, -0.0)'), [200, 20, 0, 0]); assert.deepEqual(string.get.rgb('rgba(200 +20 -233 / -0.0)'), [200, 20, 0, 0]); assert.deepEqual(string.get.hsl('hsla(+200, 100%, 50%, -0.2)'), [200, 100, 50, 0]); @@ -113,13 +115,19 @@ assert.deepEqual(string.get.rgb('#c814e900'), [200, 20, 233, 0]); assert.deepEqual(string.get.rgb('#c814e9ff'), [200, 20, 233, 1]); assert.deepEqual(string.get.rgb('rgba(200, 20, 233, 0.2)'), [200, 20, 233, 0.2]); assert.deepEqual(string.get.rgb('rgba(200 20 233 / 0.2)'), [200, 20, 233, 0.2]); +assert.deepEqual(string.get.rgb('rgba(200 20 233 0.2)'), [200, 20, 233, 0.2]); assert.deepEqual(string.get.rgb('rgba(200 20 233 / 20%)'), [200, 20, 233, 0.2]); +assert.deepEqual(string.get.rgb('rgba(200 20 233 20%)'), [200, 20, 233, 0.2]); assert.deepEqual(string.get.rgb('rgba(200, 20, 233, 0)'), [200, 20, 233, 0]); assert.deepEqual(string.get.rgb('rgba(200 20 233 / 0)'), [200, 20, 233, 0]); +assert.deepEqual(string.get.rgb('rgba(200 20 233 0)'), [200, 20, 233, 0]); assert.deepEqual(string.get.rgb('rgba(200 20 233 / 0%)'), [200, 20, 233, 0]); +assert.deepEqual(string.get.rgb('rgba(200 20 233 0%)'), [200, 20, 233, 0]); assert.deepEqual(string.get.rgb('rgba(100%, 30%, 90%, 0.2)'), [255, 77, 229, 0.2]); assert.deepEqual(string.get.rgb('rgba(100% 30% 90% / 0.2)'), [255, 77, 229, 0.2]); +assert.deepEqual(string.get.rgb('rgba(100% 30% 90% 0.2)'), [255, 77, 229, 0.2]); assert.deepEqual(string.get.rgb('rgba(100% 30% 90% / 20%)'), [255, 77, 229, 0.2]); +assert.deepEqual(string.get.rgb('rgba(100% 30% 90% 20%)'), [255, 77, 229, 0.2]); assert.deepEqual(string.get.hsl('hsla(200, 20%, 33%, 0.2)'), [200, 20, 33, 0.2]); assert.deepEqual(string.get.hsl('hsla(200, 20%, 33%, 1e-7)'), [200, 20, 33, 1e-7]); assert.deepEqual(string.get.hsl('hsl(200 20% 33% / 0.2)'), [200, 20, 33, 0.2]);