toloframework
Version: 
Javascript/HTML/CSS compiler for Firefox OS or nodewebkit apps using modules in the nodejs style.
55 lines (48 loc) • 1.42 kB
JavaScript
/**
 * Component tag:.+
 */
exports.tags = ["tag[\\-:].+"];
exports.priority = 0;
/**
 * Called the  first time the  component is  used in the  complete build
 * process.
 */
exports.initialize = function(libs) {};
/**
 * Called after the complete build process is over (success or failure).
 */
exports.terminate = function(libs) {};
/**
 * Called the first time the component is used in a specific HTML file.
 */
exports.open = function(file, libs) {};
/**
 * Called after a specific HTML file  as been processed. And called only
 * if the component has been used in this HTML file.
 */
exports.close = function(file, libs) {};
/**
 * Compile a node of the HTML tree.
 */
exports.compile = function(root, libs) {
    var children = [];
    root.name = root.name.substr(4);
    if (!root.attribs) {
        root.attribs = {};
    }
    root.children.forEach(function (child) {
        if (child.type == libs.Tree.TAG && child.name.substr(0, 3) == 'att'
            && (child.name.charAt(3) == '-' || child.name.charAt(3) == ':'))
        {
            libs.compileChildren(child);
            var value = libs.Tree.text(child).trim();
            value = value.replace(/[\t ]*[\n\r]+[\t ]*/g, ' ');
            root.attribs[child.name.substr(4)] = value;
            children = [];
        } else {
            children.push(child);
        }
    });
    root.children = children;
    libs.compile(root);
};