/build
/output
+/variables
--- /dev/null
+const Metalsmith = require('metalsmith');
+const filter = require('metalsmith-filter');
+
+const regex_initial = '**/initial-variables.sass';
+const initial_plugin = require('./plugins/01-read-initial-variables');
+
+Metalsmith(__dirname)
+ .source('../../sass')
+ .destination('./variables')
+ .clean(true)
+ .use(filter(regex_initial))
+ .use(initial_plugin())
+ .build(function(err) {
+ if (err) throw err;
+ });
--- /dev/null
+const Metalsmith = require('metalsmith');
+const filter = require('metalsmith-filter');
+
+const regex_derived = '**/derived-variables.sass';
+const derived_plugin = require('./plugins/02-read-derived-variables');
+
+Metalsmith(__dirname)
+ .source('../../sass')
+ .use(filter(regex_derived))
+ .use(derived_plugin())
+ .build(function(err) {
+ if (err) throw err;
+ });
--- /dev/null
+const Metalsmith = require('metalsmith');
+const filter = require('metalsmith-filter');
+
+const regex_sass = '**/*.sass';
+const other_plugin = require('./plugins/03-read-other-variables');
+
+Metalsmith(__dirname)
+ .source('../../sass')
+ .use(filter(regex_sass))
+ .use(other_plugin())
+ .build(function(err) {
+ if (err) throw err;
+ });
function plugin() {
let variables = {
by_name: {},
+ list: [],
};
return (files, metalsmith, 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);
variables.list.push(variable.name);
}
});
- });
- utils.writeFile(utils.files.initial_variables, variables);
+ utils.writeFile(file_path, variables);
+ });
};
}
let initial_variables = JSON.parse(fs.readFileSync(utils.files.initial_variables));
function plugin() {
- let variables = {
- by_name: {},
- };
-
return (files, metalsmith, done) => {
setImmediate(done);
Object.keys(files).forEach(file_path => {
+ let variables = {
+ by_name: {},
+ list: [],
+ };
const {file_name, lines} = utils.getLines(files, file_path);
- variables[file_name] = [];
-
lines.forEach(line => {
const variable = utils.parseLine(line);
if (variable != false) {
- variable.computed_value = utils.getComputedValue(variable.value, variable.type, initial_variables);
+ variable.computed_value = utils.getInitialValue(variable.value, variable.type, initial_variables);
variables.by_name[variable.name] = variable;
variables.list.push(variable.name);
}
});
- });
- utils.writeFile(utils.files.derived_variables, variables);
+ utils.writeFile(file_path, variables);
+ });
};
}
--- /dev/null
+module.exports = plugin;
+
+const utils = require('./utils');
+const fs = require('fs');
+
+let initial_variables = JSON.parse(fs.readFileSync(utils.files.initial_variables));
+let derived_variables = JSON.parse(fs.readFileSync(utils.files.derived_variables));
+
+function plugin() {
+ return (files, metalsmith, done) => {
+ setImmediate(done);
+
+ Object.keys(files).forEach(file_path => {
+ if (file_path.startsWith('utilities')) {
+ return;
+ }
+
+ let variables = {
+ by_name: {},
+ list: [],
+ };
+ const {file_name, lines} = utils.getLines(files, file_path);
+
+ lines.forEach(line => {
+ const variable = utils.parseLine(line);
+
+ if (variable != false) {
+ variable.computed_value = utils.getComputedValue(variable.value, variable.type, initial_variables, derived_variables);
+ variables.by_name[variable.name] = variable;
+ variables.list.push(variable.name);
+ }
+ });
+
+ utils.writeFile(file_path, variables);
+ });
+ };
+}
const fs = require('fs');
+const path = require('path');
let utils = {
getVariableType: (value) => {
writeFile: (file_path, data) => {
const json_data = JSON.stringify(data, null, ' ');
+ const json_file_path = 'variables/' + file_path.replace('.sass', '.json');
+ utils.ensureDirectoryExistence(json_file_path);
- fs.writeFile(file_path, json_data, err => {
+ fs.writeFile(json_file_path, json_data, err => {
if (err) {
return console.log(err);
}
- console.log('The file was saved!');
+ console.log(`The file ${json_file_path} was saved!`);
});
},
- getComputedValue: (value, type, initial_variables) => {
+ getInitialValue: (value, type, initial_variables) => {
if (value.startsWith('$') && value in initial_variables.by_name) {
const second_value = initial_variables.by_name[value].value;
- console.log('second_value', second_value);
- if (second_value.startsWith('$') && second_value in initial_variables) {
+ if (second_value.startsWith('$') && second_value in initial_variables.by_name) {
const third_value = initial_variables.by_name[second_value].value;
console.log('third_value', third_value);
}
return value;
+ },
+
+ getComputedValue: (value, type, initial_variables, derived_variables) => {
+ if (value.startsWith('$')) {
+ let second_value;
+
+ if (value in initial_variables.by_name) {
+ second_value = initial_variables.by_name[value].value;
+ } else if (value in derived_variables.by_name) {
+ second_value = derived_variables.by_name[value].value;
+ }
+
+ if (second_value && second_value.startsWith('$')) {
+ let third_value;
+
+ if (second_value in initial_variables.by_name) {
+ third_value = initial_variables.by_name[second_value].value;
+ } else if (second_value in derived_variables.by_name) {
+ third_value = derived_variables.by_name[second_value].value;
+ }
+
+ return third_value;
+ }
+
+ return second_value;
+ }
+
+ return value;
+ },
+
+ ensureDirectoryExistence: (file_path) => {
+ var dirname = path.dirname(file_path);
+
+ if (fs.existsSync(dirname)) {
+ return true;
+ }
+
+ utils.ensureDirectoryExistence(dirname);
+ fs.mkdirSync(dirname);
}
}
-const output_base = './output/';
-
utils.files = {};
-utils.files.initial_variables = `${output_base}initial-variables.json`;
-utils.files.derived_variables = `${output_base}derived-variables.json`;
+utils.files.initial_variables = `./variables/utilities/initial-variables.json`;
+utils.files.derived_variables = `./variables/utilities/derived-variables.json`;
module.exports = utils;
-var Metalsmith = require('metalsmith');
-var filter = require('metalsmith-filter');
-var writemetadata = require('metalsmith-writemetadata');
+const Metalsmith = require('metalsmith');
+const filter = require('metalsmith-filter');
+const writemetadata = require('metalsmith-writemetadata');
-// var regex = '**/*-variables.sass';
-// var regex = '**/*.sass';
-var regex_initial = '**/initial-variables.sass';
-var regex_derived = '**/derived-variables.sass';
-var initial_plugin = require('./01-read-initial-variables');
-var derived_plugin = require('./02-read-derived-variables');
+// const regex = '**/*-variables.sass';
+// const regex = '**/*.sass';
+const regex_initial = '**/initial-variables.sass';
+const regex_derived = '**/derived-variables.sass';
+const regex_sass = '**/*.sass';
+const initial_plugin = require('./01-read-initial-variables');
+const derived_plugin = require('./02-read-derived-variables');
-Metalsmith(__dirname)
- .source('../../sass')
- .use(filter(regex_initial))
- .use(initial_plugin())
- .build(function(err) {
- if (err) throw err;
- });
+// Metalsmith(__dirname)
+// .source('../../sass')
+// .use(filter(regex_initial))
+// .use(initial_plugin())
+// .build(function(err) {
+// if (err) throw err;
+// });
Metalsmith(__dirname)
.source('../../sass')
- .use(filter(regex_derived))
+ .use(filter(regex_sass))
.use(derived_plugin())
.build(function(err) {
if (err) throw err;