mirror of
https://github.com/S2-/minifyfromhtml.git
synced 2025-08-03 12:20:04 +02:00
update modules
This commit is contained in:
41
node_modules/cssstyle/lib/parsers.js
generated
vendored
41
node_modules/cssstyle/lib/parsers.js
generated
vendored
@@ -5,6 +5,7 @@
|
||||
'use strict';
|
||||
|
||||
const namedColors = require('./named_colors.json');
|
||||
const { hslToRgb } = require('./utils/colorSpace');
|
||||
|
||||
exports.TYPES = {
|
||||
INTEGER: 1,
|
||||
@@ -17,18 +18,20 @@ exports.TYPES = {
|
||||
ANGLE: 8,
|
||||
KEYWORD: 9,
|
||||
NULL_OR_EMPTY_STR: 10,
|
||||
CALC: 11,
|
||||
};
|
||||
|
||||
// rough regular expressions
|
||||
var integerRegEx = /^[-+]?[0-9]+$/;
|
||||
var numberRegEx = /^[-+]?[0-9]*\.[0-9]+$/;
|
||||
var lengthRegEx = /^(0|[-+]?[0-9]*\.?[0-9]+(in|cm|em|mm|pt|pc|px|ex|rem|vh|vw))$/;
|
||||
var numberRegEx = /^[-+]?[0-9]*\.?[0-9]+$/;
|
||||
var lengthRegEx = /^(0|[-+]?[0-9]*\.?[0-9]+(in|cm|em|mm|pt|pc|px|ex|rem|vh|vw|ch))$/;
|
||||
var percentRegEx = /^[-+]?[0-9]*\.?[0-9]+%$/;
|
||||
var urlRegEx = /^url\(\s*([^)]*)\s*\)$/;
|
||||
var stringRegEx = /^("[^"]*"|'[^']*')$/;
|
||||
var colorRegEx1 = /^#[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])?$/;
|
||||
var colorRegEx1 = /^#([0-9a-fA-F]{3,4}){1,2}$/;
|
||||
var colorRegEx2 = /^rgb\(([^)]*)\)$/;
|
||||
var colorRegEx3 = /^rgba\(([^)]*)\)$/;
|
||||
var calcRegEx = /^calc\(([^)]*)\)$/;
|
||||
var colorRegEx4 = /^hsla?\(\s*(-?\d+|-?\d*.\d+)\s*,\s*(-?\d+|-?\d*.\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%\s*(,\s*(-?\d+|-?\d*.\d+)\s*)?\)/;
|
||||
var angleRegEx = /^([-+]?[0-9]*\.?[0-9]+)(deg|grad|rad)$/;
|
||||
|
||||
@@ -60,6 +63,9 @@ exports.valueType = function valueType(val) {
|
||||
if (urlRegEx.test(val)) {
|
||||
return exports.TYPES.URL;
|
||||
}
|
||||
if (calcRegEx.test(val)) {
|
||||
return exports.TYPES.CALC;
|
||||
}
|
||||
if (stringRegEx.test(val)) {
|
||||
return exports.TYPES.STRING;
|
||||
}
|
||||
@@ -69,6 +75,7 @@ exports.valueType = function valueType(val) {
|
||||
if (colorRegEx1.test(val)) {
|
||||
return exports.TYPES.COLOR;
|
||||
}
|
||||
|
||||
var res = colorRegEx2.exec(val);
|
||||
var parts;
|
||||
if (res !== null) {
|
||||
@@ -92,7 +99,7 @@ exports.valueType = function valueType(val) {
|
||||
}
|
||||
if (
|
||||
parts.slice(0, 3).every(percentRegEx.test.bind(percentRegEx)) ||
|
||||
parts.every(integerRegEx.test.bind(integerRegEx))
|
||||
parts.slice(0, 3).every(integerRegEx.test.bind(integerRegEx))
|
||||
) {
|
||||
if (numberRegEx.test(parts[3])) {
|
||||
return exports.TYPES.COLOR;
|
||||
@@ -200,6 +207,11 @@ exports.parsePercent = function parsePercent(val) {
|
||||
|
||||
// either a length or a percent
|
||||
exports.parseMeasurement = function parseMeasurement(val) {
|
||||
var type = exports.valueType(val);
|
||||
if (type === exports.TYPES.CALC) {
|
||||
return val;
|
||||
}
|
||||
|
||||
var length = exports.parseLength(val);
|
||||
if (length !== undefined) {
|
||||
return length;
|
||||
@@ -287,15 +299,26 @@ exports.parseColor = function parseColor(val) {
|
||||
alpha = 1;
|
||||
var parts;
|
||||
var res = colorRegEx1.exec(val);
|
||||
// is it #aaa or #ababab
|
||||
// is it #aaa, #ababab, #aaaa, #abababaa
|
||||
if (res) {
|
||||
var defaultHex = val.substr(1);
|
||||
var hex = val.substr(1);
|
||||
if (hex.length === 3) {
|
||||
if (hex.length === 3 || hex.length === 4) {
|
||||
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
|
||||
|
||||
if (defaultHex.length === 4) {
|
||||
hex = hex + defaultHex[3] + defaultHex[3];
|
||||
}
|
||||
}
|
||||
red = parseInt(hex.substr(0, 2), 16);
|
||||
green = parseInt(hex.substr(2, 2), 16);
|
||||
blue = parseInt(hex.substr(4, 2), 16);
|
||||
if (hex.length === 8) {
|
||||
var hexAlpha = hex.substr(6, 2);
|
||||
var hexAlphaToRgbaAlpha = Number((parseInt(hexAlpha, 16) / 255).toFixed(3));
|
||||
|
||||
return 'rgba(' + red + ', ' + green + ', ' + blue + ', ' + hexAlphaToRgbaAlpha + ')';
|
||||
}
|
||||
return 'rgb(' + red + ', ' + green + ', ' + blue + ')';
|
||||
}
|
||||
|
||||
@@ -367,10 +390,12 @@ exports.parseColor = function parseColor(val) {
|
||||
if (_alpha && numberRegEx.test(_alpha)) {
|
||||
alpha = parseFloat(_alpha);
|
||||
}
|
||||
|
||||
const [r, g, b] = hslToRgb(hue, saturation / 100, lightness / 100);
|
||||
if (!_alphaString || alpha === 1) {
|
||||
return 'hsl(' + hue + ', ' + saturation + '%, ' + lightness + '%)';
|
||||
return 'rgb(' + r + ', ' + g + ', ' + b + ')';
|
||||
}
|
||||
return 'hsla(' + hue + ', ' + saturation + '%, ' + lightness + '%, ' + alpha + ')';
|
||||
return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + alpha + ')';
|
||||
}
|
||||
|
||||
if (type === exports.TYPES.COLOR) {
|
||||
|
Reference in New Issue
Block a user