0.0.0 • Published 8 years ago

textgen v0.0.0

Weekly downloads
7
License
MIT
Repository
-
Last release
8 years ago

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 {
    }
}