mirror of
https://github.com/jgthms/bulma.git
synced 2025-01-09 15:44:25 +00:00
Add initial variables output
This commit is contained in:
parent
102d170680
commit
87bf26ae2f
23
docs/scripts/read-derived-variables.js
Normal file
23
docs/scripts/read-derived-variables.js
Normal file
@ -0,0 +1,23 @@
|
||||
module.exports = plugin;
|
||||
|
||||
var utils = require('./utils');
|
||||
|
||||
function plugin() {
|
||||
return (files, metalsmith, done) => {
|
||||
setImmediate(done);
|
||||
|
||||
Object.keys(files).forEach(file_path => {
|
||||
const {file_name, lines} = utils.getLines(files, file_path);
|
||||
|
||||
lines.forEach(line => {
|
||||
const variable = utils.parseLine(line);
|
||||
|
||||
if (variable != false) {
|
||||
console.log('variable', variable);
|
||||
}
|
||||
});
|
||||
|
||||
metalsmith.variables = variables;
|
||||
});
|
||||
};
|
||||
}
|
32
docs/scripts/read-initial-variables.js
Normal file
32
docs/scripts/read-initial-variables.js
Normal file
@ -0,0 +1,32 @@
|
||||
module.exports = plugin;
|
||||
|
||||
const utils = require('./utils');
|
||||
|
||||
function plugin() {
|
||||
let variables = {
|
||||
by_name: {},
|
||||
};
|
||||
|
||||
return (files, metalsmith, done) => {
|
||||
setImmediate(done);
|
||||
|
||||
Object.keys(files).forEach(file_path => {
|
||||
const {file_name, lines} = utils.getLines(files, file_path);
|
||||
|
||||
variables[file_name] = [];
|
||||
|
||||
lines.forEach(line => {
|
||||
const variable = utils.parseLine(line);
|
||||
|
||||
if (variable != false) {
|
||||
variables.by_name[variable.name] = variable;
|
||||
variables[file_name].push(variable.name);
|
||||
}
|
||||
});
|
||||
|
||||
metalsmith.variables = variables;
|
||||
|
||||
utils.writeFile('./output/initial-variables.json', variables);
|
||||
});
|
||||
};
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
module.exports = plugin;
|
||||
|
||||
function plugin() {
|
||||
return (files, metalsmith, done) => {
|
||||
setImmediate(done);
|
||||
|
||||
Object.keys(files).forEach(file_path => {
|
||||
const file = files[file_path];
|
||||
const lines = file.contents.toString().split(/(?:\r\n|\r|\n)/g);
|
||||
|
||||
lines.forEach(line => {
|
||||
if (line.startsWith('$') && line.endsWith('!default')) {
|
||||
const colon_index = line.indexOf(':');
|
||||
const variable_name = line.substring(0, colon_index).trim();
|
||||
|
||||
const default_index = line.indexOf('!default');
|
||||
const variable_value = line.substring(colon_index + 1, default_index).trim();
|
||||
|
||||
console.log('variable_name', variable_name);
|
||||
console.log('variable_value', variable_value);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
69
docs/scripts/utils.js
Normal file
69
docs/scripts/utils.js
Normal file
@ -0,0 +1,69 @@
|
||||
const fs = require('fs');
|
||||
|
||||
function getVariableType(value) {
|
||||
if (value.startsWith('hsl')) {
|
||||
return 'color';
|
||||
} else if (value.startsWith('$')) {
|
||||
return 'variable';
|
||||
} else if (value.startsWith('BlinkMacSystemFont') || value == 'monospace') {
|
||||
return 'font-family';
|
||||
} else if (value == 'true' || value == 'false') {
|
||||
return 'boolean';
|
||||
} else if (value.includes('+')) {
|
||||
return 'computed';
|
||||
} else if (value.endsWith('px') || value.endsWith('rem')) {
|
||||
return 'size';
|
||||
}
|
||||
|
||||
return 'string';
|
||||
}
|
||||
|
||||
function parseLine(line) {
|
||||
if (line.startsWith('$') && line.endsWith('!default')) {
|
||||
const colon_index = line.indexOf(':');
|
||||
const variable_name = line.substring(0, colon_index).trim();
|
||||
|
||||
const default_index = line.indexOf('!default');
|
||||
const variable_value = line.substring(colon_index + 1, default_index).trim();
|
||||
|
||||
return variable = {
|
||||
name: variable_name,
|
||||
value: variable_value,
|
||||
type: getVariableType(variable_value),
|
||||
};
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function getLines(files, file_path) {
|
||||
const file = files[file_path];
|
||||
const slash_index = file_path.lastIndexOf('/');
|
||||
const dot_index = file_path.lastIndexOf('.');
|
||||
const file_name = file_path.substring(slash_index + 1, dot_index);
|
||||
|
||||
return {
|
||||
file_name,
|
||||
lines: file.contents.toString().split(/(?:\r\n|\r|\n)/g),
|
||||
}
|
||||
}
|
||||
|
||||
function writeFile(file_path, data) {
|
||||
const json_data = JSON.stringify(data, null, ' ');
|
||||
|
||||
fs.writeFile(file_path, json_data, err => {
|
||||
if (err) {
|
||||
return console.log(err);
|
||||
}
|
||||
|
||||
console.log('The file was saved!');
|
||||
});
|
||||
}
|
||||
|
||||
let plugin = {};
|
||||
plugin.getVariableType = getVariableType;
|
||||
plugin.getLines = getLines;
|
||||
plugin.parseLine = parseLine;
|
||||
plugin.writeFile = writeFile;
|
||||
|
||||
module.exports = plugin;
|
@ -2,17 +2,22 @@ var Metalsmith = require('metalsmith');
|
||||
var filter = require('metalsmith-filter');
|
||||
var writemetadata = require('metalsmith-writemetadata');
|
||||
|
||||
var regex = '**/*-variables.sass';
|
||||
// var regex = '**/*-variables.sass';
|
||||
// var regex = '**/*.sass';
|
||||
var plugin = require('./read-sass-variables');
|
||||
var regex_initial = '**/initial-variables.sass';
|
||||
var regex_derived = '**/derived-variables.sass';
|
||||
var initial_plugin = require('./read-initial-variables');
|
||||
var derived_plugin = require('./read-derived-variables');
|
||||
|
||||
Metalsmith(__dirname)
|
||||
.source('../../sass')
|
||||
.destination('./output')
|
||||
.clean(true)
|
||||
.use(filter(regex))
|
||||
.use(plugin())
|
||||
.use(writemetadata())
|
||||
.source('../../sass/utilities')
|
||||
// .destination('./output')
|
||||
// .clean(true)
|
||||
.use(filter(regex_initial))
|
||||
.use(initial_plugin())
|
||||
// .use(filter(regex_derived))
|
||||
// .use(derived_plugin())
|
||||
// .use(writemetadata())
|
||||
.build(function(err) {
|
||||
if (err) throw err;
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user