Actualización
This commit is contained in:
75
plugin/mindmap/edit-mindmap/build/lib/combine.js
Normal file
75
plugin/mindmap/edit-mindmap/build/lib/combine.js
Normal file
@@ -0,0 +1,75 @@
|
||||
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() {};
|
||||
19
plugin/mindmap/edit-mindmap/build/lib/config.js
Normal file
19
plugin/mindmap/edit-mindmap/build/lib/config.js
Normal file
@@ -0,0 +1,19 @@
|
||||
var fs = require('fs'),
|
||||
path = require('path'),
|
||||
config = {};
|
||||
|
||||
exports.getProjectName = function() {
|
||||
return config.name;
|
||||
};
|
||||
|
||||
//js文件夹必须和tools在同一级目录
|
||||
exports.getJsDir = function() {
|
||||
if(config.jsDir) {
|
||||
return path.resolve(__dirname, '../../', config.jsDir);
|
||||
}
|
||||
};
|
||||
|
||||
exports.parse = function(uri) {
|
||||
uri = path.normalize(uri);
|
||||
config = JSON.parse( fs.readFileSync(uri) );
|
||||
};
|
||||
136
plugin/mindmap/edit-mindmap/build/lib/dependency.js
Normal file
136
plugin/mindmap/edit-mindmap/build/lib/dependency.js
Normal file
@@ -0,0 +1,136 @@
|
||||
var fs = require('fs'),
|
||||
path = require('path');
|
||||
|
||||
var //项目名
|
||||
prefix,
|
||||
//项目路径
|
||||
jsDir,
|
||||
//依赖文件路径
|
||||
depsPath,
|
||||
//依赖关系缓存
|
||||
dependencies = {
|
||||
pathToNames: {}, // 1 to many
|
||||
nameToPath: {}, // 1 to 1
|
||||
requires: {} // 1 to many
|
||||
};
|
||||
|
||||
function addDepsToFile(src, provides, requires) {
|
||||
var insertText, fd;
|
||||
|
||||
requires = '[' + requires.join(',') + ']';
|
||||
provides = '[' + provides.join(',') + ']';
|
||||
|
||||
insertText = [
|
||||
prefix,
|
||||
'.addDependency(\'',
|
||||
src,
|
||||
'\', ',
|
||||
provides,
|
||||
', ',
|
||||
requires,
|
||||
');\n'
|
||||
].join('');
|
||||
|
||||
try{
|
||||
fd = fs.openSync(depsPath, 'a');
|
||||
fs.writeSync(fd, insertText, 0, 'utf8');
|
||||
}catch(e){
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function addDepsToObj(src, provides, requires) {
|
||||
var provide, require, deps = dependencies;
|
||||
|
||||
for( var i = 0; (provide = provides[i]); i++) {
|
||||
deps.nameToPath[provide] = src;
|
||||
if (!(src in deps.pathToNames)) {
|
||||
deps.pathToNames[src] = {};
|
||||
}
|
||||
deps.pathToNames[src][provide] = true;
|
||||
}
|
||||
|
||||
for( var j = 0; (require = requires[j]); j++) {
|
||||
if (!(src in deps.requires)) {
|
||||
deps.requires[src] = {};
|
||||
}
|
||||
deps.requires[src][require] = true;
|
||||
}
|
||||
}
|
||||
|
||||
function scanFile(uri) {
|
||||
if( path.basename(uri) === 'deps.js') {
|
||||
return;
|
||||
}
|
||||
|
||||
var reg = prefix + '\\.(require|provide)\\([\'\"]([-_\\.a-zA-Z0-9]+)[\'\"]\\);[\n\r]*',
|
||||
provides = [],
|
||||
requires = [],
|
||||
content = fs.readFileSync(uri),
|
||||
match;
|
||||
|
||||
reg = new RegExp(reg, 'g');
|
||||
uri = path.relative(jsDir, uri).replace(/\\/g, '/');
|
||||
|
||||
do {
|
||||
match = reg.exec(content);
|
||||
|
||||
if(match) {
|
||||
if( match[1] === 'require' ) {
|
||||
requires.push('\'' + match[2] + '\'');
|
||||
}
|
||||
if( match[1] === 'provide' ) {
|
||||
//prefix不应该被包含在provide name中
|
||||
var provide = match[2].split('.');
|
||||
if(provide[0] === prefix) {
|
||||
provide = provide.slice(1).join('.');
|
||||
} else {
|
||||
provide = match[2];
|
||||
}
|
||||
|
||||
provides.push('\'' + provide + '\'');
|
||||
}
|
||||
}
|
||||
} while(match);
|
||||
|
||||
addDepsToFile( uri, provides, requires );
|
||||
addDepsToObj( uri, provides, requires );
|
||||
console.log('success! -> create one dependency record : ' + uri);
|
||||
}
|
||||
|
||||
exports.scan = function(uri) {
|
||||
var stat = fs.statSync(uri);
|
||||
|
||||
if( stat.isDirectory() ) {
|
||||
fs.readdirSync(uri).forEach(function(part) {
|
||||
exports.scan( path.join(uri, part) );
|
||||
});
|
||||
} else if( stat.isFile() ) {
|
||||
scanFile(uri);
|
||||
}
|
||||
};
|
||||
|
||||
exports.init = function(config) {
|
||||
prefix = config.getProjectName();
|
||||
jsDir = config.getJsDir();
|
||||
depsPath = path.join(jsDir, 'deps.js');
|
||||
|
||||
fs.writeFile(depsPath, '');
|
||||
console.log('success! -> create a new deps.js');
|
||||
|
||||
exports.scan(jsDir);
|
||||
};
|
||||
|
||||
exports.getRequiresByPath = function(src) {
|
||||
return dependencies.requires[src];
|
||||
};
|
||||
|
||||
exports.getPathByName = function(name) {
|
||||
return dependencies.nameToPath[name];
|
||||
};
|
||||
|
||||
exports.getDepsPath = function() {
|
||||
return depsPath;
|
||||
};
|
||||
Reference in New Issue
Block a user