postcss-ordered-values
Advanced tools
Comparing version
@@ -0,1 +1,9 @@ | ||
# 2.2.3 | ||
* Resolves an integration issue with css-loader; now this module will ignore | ||
any declarations that have import placeholders. | ||
* Rewrote the processor structure for improved performance; now there is an | ||
object of processors instead of an array, and a single value validation step | ||
instead of one per processor. | ||
# 2.2.2 | ||
@@ -7,3 +15,3 @@ | ||
* Now will not re-order values that contain any `var()` definitions. | ||
* Now will not re-order values that contain any `var()` definitions. | ||
@@ -10,0 +18,0 @@ # 2.2.0 |
@@ -9,2 +9,6 @@ 'use strict'; | ||
var _getParsed = require('./lib/getParsed'); | ||
var _getParsed2 = _interopRequireDefault(_getParsed); | ||
var _border = require('./rules/border'); | ||
@@ -28,13 +32,46 @@ | ||
/* eslint-disable quote-props */ | ||
// rules | ||
var rules = { | ||
'border': _border2.default, | ||
'border-top': _border2.default, | ||
'border-right': _border2.default, | ||
'border-bottom': _border2.default, | ||
'border-left': _border2.default, | ||
'outline': _border2.default, | ||
'box-shadow': _boxShadow2.default, | ||
'flex-flow': _flexFlow2.default, | ||
'transition': _transition2.default, | ||
'-webkit-transition': _transition2.default | ||
}; | ||
/* eslint-enable */ | ||
var rules = [_border2.default, _boxShadow2.default, _flexFlow2.default, _transition2.default]; | ||
function shouldAbort(parsed) { | ||
var abort = false; | ||
parsed.walk(function (_ref) { | ||
var type = _ref.type, | ||
value = _ref.value; | ||
if (type === 'comment' || type === 'function' && value === 'var' || type === 'word' && ~value.indexOf('___CSS_LOADER_IMPORT___')) { | ||
abort = true; | ||
return false; | ||
} | ||
}); | ||
return abort; | ||
} | ||
exports.default = _postcss2.default.plugin('postcss-ordered-values', function () { | ||
return function (css) { | ||
return css.walkDecls(function (decl) { | ||
return rules.forEach(function (rule) { | ||
return rule(decl); | ||
}); | ||
css.walkDecls(function (decl) { | ||
var processor = rules[decl.prop]; | ||
if (!processor) { | ||
return; | ||
} | ||
var parsed = (0, _getParsed2.default)(decl); | ||
if (parsed.nodes.length < 2 || shouldAbort(parsed)) { | ||
return; | ||
} | ||
processor(decl, parsed); | ||
}); | ||
@@ -41,0 +78,0 @@ }; |
@@ -13,4 +13,4 @@ 'use strict'; | ||
function getParsed(decl) { | ||
var value = decl.value; | ||
var raws = decl.raws; | ||
var value = decl.value, | ||
raws = decl.raws; | ||
@@ -17,0 +17,0 @@ if (raws && raws.value && raws.value.raw) { |
@@ -8,11 +8,4 @@ 'use strict'; | ||
var _getParsed = require('../lib/getParsed'); | ||
var _getParsed2 = _interopRequireDefault(_getParsed); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
// border: <line-width> || <line-style> || <color> | ||
// outline: <outline-color> || <outline-style> || <outline-width> | ||
var borderProps = ['border', 'border-top', 'border-right', 'border-bottom', 'border-left', 'outline']; | ||
@@ -24,43 +17,28 @@ var borderWidths = ['thin', 'medium', 'thick']; | ||
function normalizeBorder(decl) { | ||
if (!~borderProps.indexOf(decl.prop)) { | ||
return; | ||
} | ||
var border = (0, _getParsed2.default)(decl); | ||
if (border.nodes.length > 2) { | ||
(function () { | ||
var order = { width: '', style: '', color: '' }; | ||
var abort = false; | ||
border.walk(function (node) { | ||
if (node.type === 'comment' || node.type === 'function' && node.value === 'var') { | ||
abort = true; | ||
return false; | ||
} | ||
if (node.type === 'word') { | ||
if (~borderStyles.indexOf(node.value)) { | ||
order.style = node.value; | ||
return false; | ||
} | ||
if (~borderWidths.indexOf(node.value) || (0, _postcssValueParser.unit)(node.value)) { | ||
order.width = node.value; | ||
return false; | ||
} | ||
order.color = node.value; | ||
return false; | ||
} | ||
if (node.type === 'function') { | ||
if (node.value === 'calc') { | ||
order.width = (0, _postcssValueParser.stringify)(node); | ||
} else { | ||
order.color = (0, _postcssValueParser.stringify)(node); | ||
} | ||
return false; | ||
} | ||
}); | ||
if (!abort) { | ||
decl.value = (order.width + ' ' + order.style + ' ' + order.color).trim(); | ||
function normalizeBorder(decl, border) { | ||
var order = { width: '', style: '', color: '' }; | ||
border.walk(function (node) { | ||
if (node.type === 'word') { | ||
if (~borderStyles.indexOf(node.value)) { | ||
order.style = node.value; | ||
return false; | ||
} | ||
})(); | ||
} | ||
if (~borderWidths.indexOf(node.value) || (0, _postcssValueParser.unit)(node.value)) { | ||
order.width = node.value; | ||
return false; | ||
} | ||
order.color = node.value; | ||
return false; | ||
} | ||
if (node.type === 'function') { | ||
if (node.value === 'calc') { | ||
order.width = (0, _postcssValueParser.stringify)(node); | ||
} else { | ||
order.color = (0, _postcssValueParser.stringify)(node); | ||
} | ||
return false; | ||
} | ||
}); | ||
decl.value = (order.width + ' ' + order.style + ' ' + order.color).trim(); | ||
}; | ||
module.exports = exports['default']; |
@@ -16,6 +16,2 @@ 'use strict'; | ||
var _getParsed = require('../lib/getParsed'); | ||
var _getParsed2 = _interopRequireDefault(_getParsed); | ||
var _getValue = require('../lib/getValue'); | ||
@@ -29,11 +25,3 @@ | ||
function normalizeBoxShadow(decl) { | ||
if (decl.prop !== 'box-shadow') { | ||
return; | ||
} | ||
var parsed = (0, _getParsed2.default)(decl); | ||
if (parsed.nodes.length < 2) { | ||
return; | ||
} | ||
function normalizeBoxShadow(decl, parsed) { | ||
var args = (0, _getArguments2.default)(parsed); | ||
@@ -49,3 +37,3 @@ var abort = false; | ||
arg.forEach(function (node) { | ||
if (node.type === 'comment' || node.type === 'function' && (node.value === 'var' || ~node.value.indexOf('calc'))) { | ||
if (node.type === 'function' && ~node.value.indexOf('calc')) { | ||
abort = true; | ||
@@ -52,0 +40,0 @@ return; |
@@ -5,48 +5,25 @@ 'use strict'; | ||
exports.default = normalizeFlexFlow; | ||
var _getParsed = require('../lib/getParsed'); | ||
var _getParsed2 = _interopRequireDefault(_getParsed); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
// flex-flow: <flex-direction> || <flex-wrap> | ||
var flexFlowProps = ['flex-flow']; | ||
var flexDirection = ['row', 'row-reverse', 'column', 'column-reverse']; | ||
var flexWrap = ['nowrap ', 'wrap', 'wrap-reverse']; | ||
var flexWrap = ['nowrap', 'wrap', 'wrap-reverse']; | ||
function normalizeFlexFlow(decl) { | ||
if (!~flexFlowProps.indexOf(decl.prop)) { | ||
return; | ||
} | ||
var flexFlow = (0, _getParsed2.default)(decl); | ||
if (flexFlow.nodes.length > 2) { | ||
(function () { | ||
var order = { | ||
direction: '', | ||
wrap: '' | ||
}; | ||
var abort = false; | ||
flexFlow.walk(function (node) { | ||
if (node.type === 'comment' || node.type === 'function' && node.value === 'var') { | ||
abort = true; | ||
return; | ||
} | ||
if (~flexDirection.indexOf(node.value)) { | ||
order.direction = node.value; | ||
return; | ||
} | ||
if (~flexWrap.indexOf(node.value)) { | ||
order.wrap = node.value; | ||
return; | ||
} | ||
}); | ||
if (!abort) { | ||
decl.value = (order.direction + ' ' + order.wrap).trim(); | ||
} | ||
})(); | ||
} | ||
function normalizeFlexFlow(decl, flexFlow) { | ||
var order = { | ||
direction: '', | ||
wrap: '' | ||
}; | ||
flexFlow.walk(function (node) { | ||
if (~flexDirection.indexOf(node.value)) { | ||
order.direction = node.value; | ||
return; | ||
} | ||
if (~flexWrap.indexOf(node.value)) { | ||
order.wrap = node.value; | ||
return; | ||
} | ||
}); | ||
decl.value = (order.direction + ' ' + order.wrap).trim(); | ||
}; | ||
module.exports = exports['default']; |
@@ -16,6 +16,2 @@ 'use strict'; | ||
var _getParsed = require('../lib/getParsed'); | ||
var _getParsed2 = _interopRequireDefault(_getParsed); | ||
var _getValue = require('../lib/getValue'); | ||
@@ -31,13 +27,4 @@ | ||
function normalizeTransition(decl) { | ||
if (decl.prop !== 'transition' && decl.prop !== '-webkit-transition') { | ||
return; | ||
} | ||
var parsed = (0, _getParsed2.default)(decl); | ||
if (parsed.nodes.length < 2) { | ||
return; | ||
} | ||
function normalizeTransition(decl, parsed) { | ||
var args = (0, _getArguments2.default)(parsed); | ||
var abort = false; | ||
@@ -52,6 +39,2 @@ var values = args.reduce(function (list, arg) { | ||
arg.forEach(function (node) { | ||
if (node.type === 'comment' || node.type === 'function' && node.value === 'var') { | ||
abort = true; | ||
return; | ||
} | ||
if (node.type === 'space') { | ||
@@ -77,8 +60,4 @@ return; | ||
if (abort) { | ||
return; | ||
} | ||
decl.value = (0, _getValue2.default)(values); | ||
} | ||
module.exports = exports['default']; |
{ | ||
"name": "postcss-ordered-values", | ||
"version": "2.2.2", | ||
"version": "2.2.3", | ||
"description": "Ensure values are ordered consistently in your CSS.", | ||
@@ -26,3 +26,3 @@ "main": "dist/index.js", | ||
"all-contributors-cli": "^3.0.5", | ||
"ava": "^0.16.0", | ||
"ava": "^0.17.0", | ||
"babel-cli": "^6.3.17", | ||
@@ -39,3 +39,3 @@ "babel-core": "^6.3.26", | ||
"eslint-plugin-babel": "^3.3.0", | ||
"eslint-plugin-import": "^1.10.2" | ||
"eslint-plugin-import": "^2.0.1" | ||
}, | ||
@@ -42,0 +42,0 @@ "homepage": "https://github.com/ben-eb/postcss-ordered-values", |
17610
-6.46%261
-10.62%