1- var postcss = require ( 'postcss' ) ;
1+ var postcss = require ( 'postcss' ) ,
2+ colorName = Object . keys ( require ( 'color-name' ) ) ;
23
34module . exports = postcss . plugin ( 'postcss-extract-value' , function ( opts ) {
45 opts = opts || { } ;
56
67 // Cache RegExp
7- var reCheck = / # \w + | r g b a ? | h s l a ? / ;
8+ var reColorKeywords = new RegExp ( colorName . join ( '|' ) ) ;
9+ var reCheck = new RegExp ( / # \w + | r g b a ? | h s l a ? / . source + '|' + reColorKeywords . source , 'g' ) ;
810 var reCSSVariable = / v a r \( - { 2 } \w { 1 } [ \w + - ] * / ;
911 var reHex = / # ( \w { 6 } | \w { 3 } ) / ;
1012 var reRgb = / r g b a ? \( [ \d , . \s ] + \) / ;
1113 var reHls = / h s l a ? \( \s ? [ 0 - 9 ] { 1 , 3 } , \s ? ( ( [ 0 - 9 ] { 1 , 3 } ) + % , \s ? ) { 2 } [ 0 - 9 . ] + \s ? \) / ;
1214 var reExtract = new RegExp ( reHex . source + '|' + reRgb . source + '|' +
13- reHls . source , 'g' ) ;
15+ reHls . source + '|' + reColorKeywords . source , 'g' ) ;
1416
1517 // Options
16- var filterByProps = opts . filterByProps ,
17- onlyColor = opts . onlyColor ;
18+ var filterByProps = opts . filterByProps ;
19+ var onlyColor = opts . onlyColor ;
1820
1921 function checkColor ( value ) {
2022 return reCheck . test ( value ) ;
@@ -23,6 +25,7 @@ module.exports = postcss.plugin('postcss-extract-value', function (opts) {
2325 function extractColor ( value ) {
2426 var resultArray = [ ] ;
2527 var result = [ ] ;
28+
2629 while ( ( result = reExtract . exec ( value ) ) !== null ) {
2730 resultArray . push ( result [ 0 ] ) ;
2831 }
@@ -44,18 +47,19 @@ module.exports = postcss.plugin('postcss-extract-value', function (opts) {
4447 function extractValue ( decl , storePropsLink , valueFiltered ) {
4548 var positionValue = storePropsLink . indexOf ( valueFiltered ) + 1 ;
4649 var variable = 'var(' + makeCSSVariable ( decl . prop , positionValue ) + ')' ;
47- decl . value = decl . value . replace ( valueFiltered , variable ) ;
50+
51+ return decl . value . replace ( valueFiltered , variable ) ;
4852 }
4953
5054 return function ( css ) {
51- var root = css . root ( ) ,
52- storeProps = { } ,
53- storePropsLink = { } ,
54- checkColorFilter = true ,
55- checkPropFilter = true ,
56- valueFilteredList = [ ] ,
57- valueFiltered = '' ,
58- rootSel = null ;
55+ var root = css . root ( ) ;
56+ var storeProps = { } ;
57+ var storePropsLink = { } ;
58+ var checkColorFilter = true ;
59+ var checkPropFilter = true ;
60+ var valueFilteredList = [ ] ;
61+ var valueFiltered = '' ;
62+ var rootSel = null ;
5963
6064 css . walkRules ( function ( rule ) {
6165
@@ -90,7 +94,7 @@ module.exports = postcss.plugin('postcss-extract-value', function (opts) {
9094 storePropsLink . push ( valueFiltered ) ;
9195 }
9296
93- extractValue ( decl , storePropsLink , valueFiltered ) ;
97+ decl . value = extractValue ( decl , storePropsLink , valueFiltered ) ;
9498 }
9599 }
96100 }
0 commit comments