Urara-Blog/node_modules/.pnpm-store/v3/files/12/b05f3b49c6c108f59dc9f09dc68ba01b94bb3aa2605a8e7be570953c0af081a01642cb5f17a045554f3c89de3a610fcaabf39913c708d3e0adf951de5d6bf2
2022-08-14 01:14:53 +08:00

87 lines
1.4 KiB
Text

'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 };