initial commit
This commit is contained in:
87
node_modules/postcss-merge-longhand/src/lib/validateWsc.js
generated
vendored
Normal file
87
node_modules/postcss-merge-longhand/src/lib/validateWsc.js
generated
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
'use strict';
|
||||
const colors = require('./colornames.js');
|
||||
|
||||
const widths = new Set(['thin', 'medium', 'thick']);
|
||||
const styles = new Set([
|
||||
'none',
|
||||
'hidden',
|
||||
'dotted',
|
||||
'dashed',
|
||||
'solid',
|
||||
'double',
|
||||
'groove',
|
||||
'ridge',
|
||||
'inset',
|
||||
'outset',
|
||||
]);
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
* @return {boolean}
|
||||
*/
|
||||
function isStyle(value) {
|
||||
return value !== undefined && styles.has(value.toLowerCase());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
* @return {boolean}
|
||||
*/
|
||||
function isWidth(value) {
|
||||
return (
|
||||
(value && widths.has(value.toLowerCase())) ||
|
||||
/^(\d+(\.\d+)?|\.\d+)(\w+)?$/.test(value)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
* @return {boolean}
|
||||
*/
|
||||
function isColor(value) {
|
||||
if (!value) {
|
||||
return false;
|
||||
}
|
||||
|
||||
value = value.toLowerCase();
|
||||
|
||||
if (/rgba?\(/.test(value)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (/hsla?\(/.test(value)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (/#([0-9a-z]{6}|[0-9a-z]{3})/.test(value)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (value === 'transparent') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (value === 'currentcolor') {
|
||||
return true;
|
||||
}
|
||||
|
||||
return colors.has(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {[string, string, string]} wscs
|
||||
* @return {boolean}
|
||||
*/
|
||||
function isValidWsc(wscs) {
|
||||
const validWidth = isWidth(wscs[0]);
|
||||
const validStyle = isStyle(wscs[1]);
|
||||
const validColor = isColor(wscs[2]);
|
||||
|
||||
return (
|
||||
(validWidth && validStyle) ||
|
||||
(validWidth && validColor) ||
|
||||
(validStyle && validColor)
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = { isStyle, isWidth, isColor, isValidWsc };
|
||||
Reference in New Issue
Block a user