aliascss
Version:
AliasCSS is a CSS post processor.
51 lines (50 loc) • 1.47 kB
JavaScript
import color from './color.js';
export default function border(data, custom) {
// let result='';
const styleRegex = /-(none|n|hidden|h|dotted|dt|dashed|ds|solid|s|double|db|groove|g|ridge|r|inset|i|outset|o)(?=[\w-]|$)/;
const widthRegex = /[-]?([0-9]+[d/.]?[0-9]*(px|em|fr|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|p))/;
let [s, l, c] = ['', '', ''];
// Style
if (styleRegex.test(data)) {
const m = data.match(styleRegex);
s = m ? style[m[1]] : '';
data = m ? data.replace(m[0], '') : data;
}
// width
if (/-(thick|medium|thin)/.test(data)) {
const m = data.match(/-(thick|medium|thin)/);
l = m ? m[1] : '';
data = m ? data.replace(m[0], '') : data;
}
else if (widthRegex.test(data)) {
const m = data.match(widthRegex);
l = m ? m[1].replace(/p[\s]?$/, '%').replace(/(\d)d(\d)/, '$1.$2') : '';
data = m ? data.replace(m[0], '') : data;
}
if (data) {
c = color(data, custom);
}
return `${l ? l : ''} ${s ? s : ''} ${c ? c : ''}`.trim();
}
const style = {
n: 'none',
none: 'none',
s: 'solid',
solid: 'solid',
r: 'ridge',
ridge: 'ridge',
o: 'outset',
outset: 'outset',
i: 'inset',
inset: 'inset',
h: 'hidden',
hidden: 'hidden',
g: 'groove',
groove: 'groove',
db: 'double',
double: 'double',
dotted: 'dotted',
dt: 'dotted',
ds: 'dashed',
dashed: 'dashed',
};