reduce-css-calc
Advanced tools
Comparing version
@@ -0,1 +1,6 @@ | ||
# 2.0.4 - 2017-05-09 | ||
- Fixed: CSS variable regex was overly greedy and caused a crash in some | ||
cases. ([#27](https://github.com/MoOx/reduce-css-calc/pull/27) - @andyjansson) | ||
# 2.0.3 - 2017-05-09 | ||
@@ -2,0 +7,0 @@ |
@@ -1,2 +0,2 @@ | ||
"use strict"; | ||
'use strict'; | ||
@@ -7,3 +7,3 @@ Object.defineProperty(exports, "__esModule", { | ||
var _convert = require("./convert"); | ||
var _convert = require('./convert'); | ||
@@ -24,2 +24,24 @@ var _convert2 = _interopRequireDefault(_convert); | ||
function isValueType(type) { | ||
switch (type) { | ||
case 'LengthValue': | ||
case 'AngleValue': | ||
case 'TimeValue': | ||
case 'FrequencyValue': | ||
case 'ResolutionValue': | ||
case 'EmValue': | ||
case 'ExValue': | ||
case 'ChValue': | ||
case 'RemValue': | ||
case 'VhValue': | ||
case 'VwValue': | ||
case 'VminValue': | ||
case 'VmaxValue': | ||
case 'PercentageValue': | ||
case 'Value': | ||
return true; | ||
} | ||
return false; | ||
} | ||
function convertMathExpression(node, precision) { | ||
@@ -62,3 +84,3 @@ var nodes = (0, _convert2.default)(node.left, node.right, precision); | ||
// value - value | ||
if (left.type === right.type && left.type !== 'MathExpression') { | ||
if (left.type === right.type && isValueType(left.type)) { | ||
node = Object.assign({}, left); | ||
@@ -69,3 +91,3 @@ if (op === "+") node.value = left.value + right.value;else node.value = left.value - right.value; | ||
// value <op> (expr) | ||
if (left.type !== 'MathExpression' && right.type === 'MathExpression') { | ||
if (isValueType(left.type) && (right.operator === '+' || right.operator === '-') && right.type === 'MathExpression') { | ||
// value + (value + something) => (value + value) + something | ||
@@ -104,3 +126,3 @@ // value + (value - something) => (value + value) - something | ||
// (expr) <op> value | ||
if (left.type === 'MathExpression' && right.type !== 'MathExpression') { | ||
if (left.type === 'MathExpression' && (left.operator === '+' || left.operator === '-') && isValueType(right.type)) { | ||
// (value + something) + value => (value + value) + something | ||
@@ -161,3 +183,3 @@ // (value - something) + value => (value + value) - something | ||
if (node.left.type === 'MathExpression') { | ||
if (node.left.left.type !== 'MathExpression' && node.left.right.type !== 'MathExpression') { | ||
if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) { | ||
node.left.left.value /= node.right.value; | ||
@@ -178,3 +200,3 @@ node.left.right.value /= node.right.value; | ||
if (node.left.type === 'MathExpression' && node.right.type === 'Value') { | ||
if (node.left.left.type !== 'MathExpression' && node.left.right.type !== 'MathExpression') { | ||
if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) { | ||
node.left.left.value *= node.right.value; | ||
@@ -186,3 +208,3 @@ node.left.right.value *= node.right.value; | ||
// something * value | ||
else if (node.left.type !== 'MathExpression' && node.right.type === 'Value') { | ||
else if (isValueType(node.left.type) && node.right.type === 'Value') { | ||
node.left.value *= node.right.value; | ||
@@ -193,3 +215,3 @@ return node.left; | ||
else if (node.left.type === 'Value' && node.right.type === 'MathExpression') { | ||
if (node.right.left.type !== 'MathExpression' && node.right.right.type !== 'MathExpression') { | ||
if (isValueType(node.right.left.type) && isValueType(node.right.right.type)) { | ||
node.right.left.value *= node.left.value; | ||
@@ -201,3 +223,3 @@ node.right.right.value *= node.left.value; | ||
// value * something | ||
else if (node.left.type === 'Value' && node.right.type !== 'MathExpression') { | ||
else if (node.left.type === 'Value' && isValueType(node.right.type)) { | ||
node.right.value *= node.left.value; | ||
@@ -225,2 +247,2 @@ return node.right; | ||
exports.default = reduce; | ||
module.exports = exports["default"]; | ||
module.exports = exports['default']; |
@@ -712,3 +712,3 @@ /* parser generated by jison 0.4.17 */ | ||
}, | ||
rules: [/^(?:\s+)/,/^(?:\*)/,/^(?:\/)/,/^(?:\+)/,/^(?:-)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)px\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)cm\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)mm\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)in\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)pt\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)pc\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)deg\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)grad\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)rad\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)turn\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)s\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)ms\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)Hz\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)kHz\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)dpi\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)dpcm\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)dppx\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)em\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)ex\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)ch\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)rem\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)vw\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)vh\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)vmin\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)vmax\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)%)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)\b)/,/^(?:(calc))/,/^(?:(var\(.*\)))/,/^(?:([a-z]+))/,/^(?:\()/,/^(?:\))/,/^(?:$)/], | ||
rules: [/^(?:\s+)/,/^(?:\*)/,/^(?:\/)/,/^(?:\+)/,/^(?:-)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)px\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)cm\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)mm\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)in\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)pt\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)pc\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)deg\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)grad\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)rad\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)turn\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)s\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)ms\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)Hz\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)kHz\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)dpi\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)dpcm\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)dppx\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)em\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)ex\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)ch\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)rem\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)vw\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)vh\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)vmin\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)vmax\b)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)%)/,/^(?:([0-9]+(\.[0-9]*)?|\.[0-9]+)\b)/,/^(?:(calc))/,/^(?:(var\([^\)]*\)))/,/^(?:([a-z]+))/,/^(?:\()/,/^(?:\))/,/^(?:$)/], | ||
conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"inclusive":true}} | ||
@@ -715,0 +715,0 @@ }); |
{ | ||
"name": "reduce-css-calc", | ||
"version": "2.0.3", | ||
"version": "2.0.4", | ||
"description": "Reduce CSS calc() function to the maximum", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
47081
1.34%1026
2.09%