kopia lustrzana https://github.com/c9/core
63 wiersze
2.0 KiB
JavaScript
63 wiersze
2.0 KiB
JavaScript
/**
|
|
* Architect module resolver for Cloud9 source code,
|
|
* using runtime information from the running Cloud9.
|
|
* It's not perfect but it's simple, avoids scanning all modules,
|
|
* and doesn't need any configuration. A full resolver
|
|
* requires significant server-side analysis and infrastructure
|
|
* work.
|
|
* @ignore
|
|
*/
|
|
define(function(require, exports, module) {
|
|
"use strict";
|
|
|
|
main.consumes = [
|
|
"Plugin", "language"
|
|
];
|
|
main.provides = ["language.tern.architect_resolver"];
|
|
return main;
|
|
|
|
function main(options, imports, register) {
|
|
var Plugin = imports.Plugin;
|
|
var language = imports.language;
|
|
var assert = require("c9/assert");
|
|
|
|
/***** Initialization *****/
|
|
|
|
var plugin = new Plugin("Ajax.org", main.consumes);
|
|
|
|
var loaded = false;
|
|
function load() {
|
|
if (loaded) return false;
|
|
loaded = true;
|
|
|
|
assert(window.plugins && window.plugins.length > 10, "Architect plugins must be in window.plugins");
|
|
|
|
var knownPlugins = {};
|
|
window.plugins.forEach(function(plugin) {
|
|
if (!plugin || !plugin.provides)
|
|
return;
|
|
plugin.provides.forEach(function(provide) {
|
|
knownPlugins["_" + provide] = plugin.packagePath;
|
|
});
|
|
});
|
|
|
|
language.getWorker(function(err, worker) {
|
|
if (err) return console.error(err);
|
|
|
|
worker.on("architectPlugins", function() {
|
|
worker.emit("architectPluginsResult", { data: knownPlugins });
|
|
});
|
|
});
|
|
|
|
language.registerLanguageHandler("plugins/c9.ide.language.javascript.tern/worker/architect_resolver_worker");
|
|
}
|
|
|
|
plugin.on("load", function() {
|
|
load();
|
|
});
|
|
|
|
plugin.freezePublicAPI({});
|
|
|
|
register(null, { "language.tern.architect_resolver": plugin });
|
|
}
|
|
}); |