fix loading of unpackaged workers
This commit is contained in:
parent
ccdb5c57c4
commit
fa4b5d5474
8 changed files with 29 additions and 19 deletions
|
|
@ -50,20 +50,21 @@ var options = {
|
||||||
workerPath: "",
|
workerPath: "",
|
||||||
modePath: "",
|
modePath: "",
|
||||||
themePath: "",
|
themePath: "",
|
||||||
suffix: ".js"
|
suffix: ".js",
|
||||||
|
$moduleUrls: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.get = function(key) {
|
exports.get = function(key) {
|
||||||
if (!options.hasOwnProperty(key))
|
if (!options.hasOwnProperty(key))
|
||||||
throw new Error("Unknown config key: " + key);
|
throw new Error("Unknown config key: " + key);
|
||||||
|
|
||||||
return options[key];
|
return options[key];
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.set = function(key, value) {
|
exports.set = function(key, value) {
|
||||||
if (!options.hasOwnProperty(key))
|
if (!options.hasOwnProperty(key))
|
||||||
throw new Error("Unknown config key: " + key);
|
throw new Error("Unknown config key: " + key);
|
||||||
|
|
||||||
options[key] = value;
|
options[key] = value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -71,14 +72,23 @@ exports.all = function() {
|
||||||
return lang.copyObject(options);
|
return lang.copyObject(options);
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.moduleUrl = function(name) {
|
exports.moduleUrl = function(name, component) {
|
||||||
var parts = name.split("/");
|
if (options.$moduleUrls[name])
|
||||||
var component = parts[1];
|
return options.$moduleUrls[name];
|
||||||
var base = parts[2];
|
|
||||||
|
|
||||||
|
var parts = name.split("/");
|
||||||
|
component = component || parts[1];
|
||||||
|
var base = parts[2].replace(component, "").replace(/(^[\-_])|([\-_]$)/, "");
|
||||||
|
|
||||||
|
if (!base)
|
||||||
|
base = parts[1];
|
||||||
return this.get(component + "Path") + "/" + component + "-" + base + this.get("suffix");
|
return this.get(component + "Path") + "/" + component + "-" + base + this.get("suffix");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.setModuleUrl = function(name, subst) {
|
||||||
|
return options.$moduleUrls[name] = subst;
|
||||||
|
};
|
||||||
|
|
||||||
exports.init = function() {
|
exports.init = function() {
|
||||||
options.packaged = require.packaged || module.packaged || (global.define && define.packaged);
|
options.packaged = require.packaged || module.packaged || (global.define && define.packaged);
|
||||||
|
|
||||||
|
|
@ -87,7 +97,7 @@ exports.init = function() {
|
||||||
|
|
||||||
var scriptOptions = {};
|
var scriptOptions = {};
|
||||||
var scriptUrl = "";
|
var scriptUrl = "";
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
var scripts = document.getElementsByTagName("script");
|
||||||
for (var i=0; i<scripts.length; i++) {
|
for (var i=0; i<scripts.length; i++) {
|
||||||
var script = scripts[i];
|
var script = scripts[i];
|
||||||
|
|
@ -96,7 +106,7 @@ exports.init = function() {
|
||||||
if (!src) {
|
if (!src) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var attributes = script.attributes;
|
var attributes = script.attributes;
|
||||||
for (var j=0, l=attributes.length; j < l; j++) {
|
for (var j=0, l=attributes.length; j < l; j++) {
|
||||||
var attr = attributes[j];
|
var attr = attributes[j];
|
||||||
|
|
@ -109,17 +119,17 @@ exports.init = function() {
|
||||||
if (m)
|
if (m)
|
||||||
scriptUrl = m[1];
|
scriptUrl = m[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scriptUrl) {
|
if (scriptUrl) {
|
||||||
scriptOptions.base = scriptOptions.base || scriptUrl;
|
scriptOptions.base = scriptOptions.base || scriptUrl;
|
||||||
scriptOptions.packaged = true;
|
scriptOptions.packaged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
scriptOptions.workerPath = scriptOptions.workerPath || scriptOptions.base;
|
scriptOptions.workerPath = scriptOptions.workerPath || scriptOptions.base;
|
||||||
scriptOptions.modePath = scriptOptions.modePath || scriptOptions.base;
|
scriptOptions.modePath = scriptOptions.modePath || scriptOptions.base;
|
||||||
scriptOptions.themePath = scriptOptions.themePath || scriptOptions.base;
|
scriptOptions.themePath = scriptOptions.themePath || scriptOptions.base;
|
||||||
delete scriptOptions.base;
|
delete scriptOptions.base;
|
||||||
|
|
||||||
for (var key in scriptOptions)
|
for (var key in scriptOptions)
|
||||||
if (typeof scriptOptions[key] !== "undefined")
|
if (typeof scriptOptions[key] !== "undefined")
|
||||||
exports.set(key, scriptOptions[key]);
|
exports.set(key, scriptOptions[key]);
|
||||||
|
|
|
||||||
|
|
@ -856,7 +856,7 @@ var EditSession = function(text, mode) {
|
||||||
if (!config.get("packaged"))
|
if (!config.get("packaged"))
|
||||||
return callback();
|
return callback();
|
||||||
|
|
||||||
net.loadScript(config.moduleUrl(name), callback);
|
net.loadScript(config.moduleUrl(name, "mode"), callback);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ oop.inherits(Mode, TextMode);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.createWorker = function(session) {
|
this.createWorker = function(session) {
|
||||||
var worker = new WorkerClient(["ace"], "ace/worker/coffee", "Worker");
|
var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker");
|
||||||
worker.attachToDocument(session.getDocument());
|
worker.attachToDocument(session.getDocument());
|
||||||
|
|
||||||
worker.on("error", function(e) {
|
worker.on("error", function(e) {
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ oop.inherits(Mode, TextMode);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.createWorker = function(session) {
|
this.createWorker = function(session) {
|
||||||
var worker = new WorkerClient(["ace"], "ace/worker/css", "Worker");
|
var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
|
||||||
worker.attachToDocument(session.getDocument());
|
worker.attachToDocument(session.getDocument());
|
||||||
|
|
||||||
worker.on("csslint", function(e) {
|
worker.on("csslint", function(e) {
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ oop.inherits(Mode, TextMode);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.createWorker = function(session) {
|
this.createWorker = function(session) {
|
||||||
var worker = new WorkerClient(["ace"], "ace/worker/javascript", "JavaScriptWorker");
|
var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
|
||||||
worker.attachToDocument(session.getDocument());
|
worker.attachToDocument(session.getDocument());
|
||||||
|
|
||||||
worker.on("jslint", function(results) {
|
worker.on("jslint", function(results) {
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
this.createWorker = function(session) {
|
this.createWorker = function(session) {
|
||||||
this.$deltas = [];
|
this.$deltas = [];
|
||||||
var worker = new WorkerClient(["ace"], "ace/worker/xquery", "XQueryWorker");
|
var worker = new WorkerClient(["ace"], "ace/mode/xquery_worker", "XQueryWorker");
|
||||||
var that = this;
|
var that = this;
|
||||||
|
|
||||||
session.getDocument().on('change', function(evt){
|
session.getDocument().on('change', function(evt){
|
||||||
|
|
|
||||||
|
|
@ -1288,7 +1288,7 @@ var VirtualRenderer = function(container, theme) {
|
||||||
if (!config.get("packaged"))
|
if (!config.get("packaged"))
|
||||||
return callback();
|
return callback();
|
||||||
|
|
||||||
net.loadScript(config.moduleUrl(name), callback);
|
net.loadScript(config.moduleUrl(name, "theme"), callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ var WorkerClient = function(topLevelNamespaces, mod, classname) {
|
||||||
this.changeListener = this.changeListener.bind(this);
|
this.changeListener = this.changeListener.bind(this);
|
||||||
|
|
||||||
if (config.get("packaged")) {
|
if (config.get("packaged")) {
|
||||||
this.$worker = new Worker(config.moduleUrl(mod));
|
this.$worker = new Worker(config.moduleUrl(mod, "worker"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var workerUrl;
|
var workerUrl;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue