mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-04 12:49:32 +08:00
87 lines
1.4 KiB
Text
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 };
|