requisite
Version:
A cosmic javascript bundler.
151 lines (143 loc) • 3.52 kB
JavaScript
// Generated by CoffeeScript 1.7.1
var clone, codegen, graph, parse, walk;
clone = function(obj) {
var inst, key;
if ((obj == null) || typeof obj !== 'object') {
return obj;
}
inst = new obj.constructor();
for (key in obj) {
inst[key] = clone(obj[key]);
}
return inst;
};
codegen = function(ast, options) {
var minifier, minify, _ref;
if (options == null) {
options = {};
}
if (!options.minify) {
options = {
comment: true,
format: {
indent: {
style: ' ',
base: 0
},
quotes: 'auto',
escapeless: true,
parentheses: false,
compact: false,
semicolons: false
}
};
return require('escodegen').generate(ast, options);
} else {
minifier = (_ref = options.minifier) != null ? _ref : 'uglify';
minify = require('./minify');
return minify[minifier](ast, options);
}
};
parse = function(source, options) {
var ast, parser;
if (options == null) {
options = {};
}
parser = require('esprima');
ast = parser.parse(source, {
comment: true,
range: true,
raw: true,
tokens: true
});
return ast = require('escodegen').attachComments(ast, ast.comments, ast.tokens);
};
walk = function(node, visitor) {
var el, k, v, _i, _len, _results, _results1;
if ((node != null) && typeof node === 'object') {
if (!visitor(node)) {
_results = [];
for (k in node) {
v = node[k];
_results.push(walk(v, visitor));
}
return _results;
}
} else if (Array.isArray(node)) {
_results1 = [];
for (_i = 0, _len = node.length; _i < _len; _i++) {
el = node[_i];
_results1.push(walk(el, visitor));
}
return _results1;
}
};
graph = function(mod) {
var depth, idx, line, lines, nextDepth, nextLine, seen, walkdeps, _i, _len, _ref, _ref1;
seen = {};
walkdeps = function(mod, fn, depth) {
var k, v, _ref, _results;
if (depth == null) {
depth = 0;
}
if (seen[mod.requireAs]) {
fn(mod, depth, true);
return;
}
seen[mod.requireAs] = true;
depth += 1;
_ref = mod.dependencies;
_results = [];
for (k in _ref) {
v = _ref[k];
if ((fn(v, depth)) !== false) {
_results.push(walkdeps(v, fn, depth));
} else {
_results.push(void 0);
}
}
return _results;
};
console.log(mod.requireAs);
lines = [];
walkdeps(mod, function(mod, depth, seen) {
var line;
if (seen) {
lines.pop();
return;
}
line = '├─' + mod.requireAs;
if (depth > 0) {
line = (new Array(depth * 2)).join(' ') + line;
}
return lines.push([line, depth]);
});
for (idx = _i = 0, _len = lines.length; _i < _len; idx = ++_i) {
_ref = lines[idx], line = _ref[0], depth = _ref[1];
if (lines[idx + 1] == null) {
lines[idx][0] = line.replace('├─', '└─');
} else {
_ref1 = lines[idx + 1], nextLine = _ref1[0], nextDepth = _ref1[1];
if ((nextLine != null) && depth !== nextDepth) {
lines[idx][0] = line.replace('├─', '└─');
}
}
}
return console.log(((function() {
var _j, _len1, _results;
_results = [];
for (_j = 0, _len1 = lines.length; _j < _len1; _j++) {
line = lines[_j];
_results.push(line[0]);
}
return _results;
})()).join('\n'));
};
module.exports = {
clone: clone,
codegen: codegen,
graph: graph,
parse: parse,
walk: walk
};
//# sourceMappingURL=utils.map