kopia lustrzana https://github.com/c9/core
46 wiersze
1.8 KiB
JavaScript
46 wiersze
1.8 KiB
JavaScript
require("../../../../support/cloud9/support/requireJS-node");
|
|
require.paths.unshift(__dirname + "/../../../../support/cloud9/support/treehugger/lib");
|
|
require.paths.unshift(__dirname + "/../../../../support/cloud9/client");
|
|
require.paths.unshift(__dirname + "/../../.."); // cloud9infra/client/c9
|
|
var parser = require("treehugger/js/parse");
|
|
var infer = require('./infer');
|
|
var Value = require('./values').Value;
|
|
var externalize = require('./externalize').externalize;
|
|
var scopeAnalyzer = require('plugins/c9.ide.language.javascript/scope_analyzer');
|
|
var fs = require('fs');
|
|
|
|
var builtins1 = JSON.parse(fs.readFileSync(__dirname + "/builtin.jst", 'UTF-8'));
|
|
var builtins2 = JSON.parse(fs.readFileSync(__dirname + "/builtin.custom.jst", 'UTF-8'));
|
|
|
|
disabledFeatures = {};
|
|
|
|
function analyze(path) {
|
|
fs.readFile(path, 'ascii', function(err, code) {
|
|
if (err) throw err;
|
|
|
|
var node = parser.parse(code);
|
|
scopeAnalyzer.analyze(null, node);
|
|
Value.enterContext('es5:unnamed');
|
|
var scope = infer.createRootScope(node.getAnnotation("scope"), [builtins1, builtins2]);
|
|
Value.leaveContext();
|
|
Value.enterContext(path + ':');
|
|
infer.staticEval(scope, node);
|
|
var exportValue;
|
|
if (scope.get('module'))
|
|
scope.get('module').values.forEach(function(v) {
|
|
exportValue = v;
|
|
});
|
|
else if (scope.get('exports'))
|
|
scope.get('exports').values.forEach(function(v) {
|
|
exportValue = v;
|
|
});
|
|
var extern = externalize(path, exportValue);
|
|
if (exportValue)
|
|
extern[path] = exportValue.guid;
|
|
fs.writeFileSync(path + '.jst', JSON.stringify(extern));
|
|
console.log(JSON.stringify(extern, null, 2));
|
|
});
|
|
}
|
|
|
|
analyze(process.argv[2]);
|