mirror of
https://github.com/jgthms/bulma
synced 2026-03-15 02:04:29 -07:00
Add CSS var map regex, Fix basic list of CSS vars
This commit is contained in:
@@ -2,26 +2,55 @@ module.exports = plugin;
|
||||
|
||||
const utils = require('./utils');
|
||||
const fs = require('fs');
|
||||
const regexRegisterColors = /registerCSSVarColors\((\$[a-z]+)\)/g;
|
||||
const regexAssign = /--[a-z-]*:/g;
|
||||
const regexUsage = /var\(--[a-z-]*(\, \#|\))/g;
|
||||
const LOG_EVERYTHING = false;
|
||||
|
||||
const COLOR_MAPS = {
|
||||
'$colors': ["white", "black", "light", "dark", "primary", "link", "info", "success", "warning", "danger"],
|
||||
'$shades': ["black-bis", "black-ter", "grey-darker", "grey-dark", "grey", "grey-light", "grey-lighter", "white-ter", "white-bis"],
|
||||
}
|
||||
|
||||
function logThis(message) {
|
||||
if (LOG_EVERYTHING) {
|
||||
console.log(message);
|
||||
}
|
||||
}
|
||||
|
||||
function getFirstGroup(regexp, str) {
|
||||
const array = [...str.matchAll(regexp)];
|
||||
return array.map(m => m[1]);
|
||||
}
|
||||
|
||||
function plugin() {
|
||||
return (files, metalsmith, done) => {
|
||||
setImmediate(done);
|
||||
|
||||
let hasErrors = false;
|
||||
|
||||
const cssvars = fs.readFileSync(`../sass/themes/default.sass`, "utf8");
|
||||
let defaultAssignments = cssvars.match(regexAssign);
|
||||
const cssvars = fs.readFileSync(`../sass/themes/basic.sass`, "utf8");
|
||||
|
||||
// Check for --cyan: #{$cyan}
|
||||
let defaultAssignments = cssvars.match(regexAssign) || [];
|
||||
defaultAssignments = defaultAssignments.map(assignment => assignment.replace(':', ''));
|
||||
|
||||
// Check for +registerCSSVarColors($colors)
|
||||
let registerMaps = getFirstGroup(regexRegisterColors, cssvars);
|
||||
|
||||
if (registerMaps) {
|
||||
registerMaps.forEach(mapName => {
|
||||
if (mapName in COLOR_MAPS) {
|
||||
const colors = COLOR_MAPS[mapName].map(colorName => {
|
||||
defaultAssignments.push(`--${colorName}`);
|
||||
defaultAssignments.push(`--${colorName}-invert`);
|
||||
defaultAssignments.push(`--${colorName}-light`);
|
||||
defaultAssignments.push(`--${colorName}-dark`);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Object.keys(files).forEach(filePath => {
|
||||
const {fileName, lines} = utils.getLines(files, filePath);
|
||||
const file = files[filePath];
|
||||
|
||||
Reference in New Issue
Block a user