0.0.0 • Published 8 years ago
textgen v0.0.0
textgen
Easy to use text (and code) generation framework.
There are 3 steps to generating text/code:
- define a model schema
- write transform for schema to template model
- write template
example
define the model
var model = {
components: {
btn: {
modifiers: ['sm', 'md', 'lg'],
}
}
}
transform the model
var map = require('textgen').map;
var transformer = require('textgen').transformer;
var templateModel = transformer({
components: (components) => {
return map(components, (component, name) => {
component.name = name;
return component;
}).map((component) => {
return transformer({
modifiers: (modifiers) => {
return modifiers.map((modifier) => {
return {
className: component.name + '-' + modifier,
};
});
},
});
});
},
})(model);
/*
templateModel = {
components: [
{
name: 'btn',
modifiers: [{className: 'btn-sm', 'btn-md', 'btn-lg'}],
}
]
}
*/
template
components.tpl
._.components.forEach((component) => {
.${component.name} {
. component.modifiers.forEach((modifier) => {
&.${modifier.className} {
}
. })
}
.})
var compileFile = require('textgen').compileFile;
var write = require('textgen').write;
var template = compileFile('./components.tpl');
var content = template(templateModel);
write('components.less', content);
components.less
.btn {
&.btn-sm {
}
&.btn-md {
}
&.btn-lg {
}
}
0.0.0
8 years ago