From 23a2e368fc5be867f00fb84e18a9c5bbefa609b8 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 26 Jan 2011 17:09:32 +0100 Subject: [PATCH] make sure the worker also works with the packages version --- lib/ace/worker/host.js | 50 ++++++++++++++++++++++----------- lib/ace/worker/worker_client.js | 18 ++++++++---- 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/lib/ace/worker/host.js b/lib/ace/worker/host.js index 7e182a38..cb449ffd 100644 --- a/lib/ace/worker/host.js +++ b/lib/ace/worker/host.js @@ -7,33 +7,48 @@ var window = { console: console }; -var require = function(name) { - if (require.modules[name]) - return require.modules[name].exports; +var require = function(id) { + var module = require.modules[id]; + if (module) { + if (!module.initialized) { + module.exports = module.factory().exports; + module.initialized = true; + } + return module.exports; + } - var chunks = name.split("/"); + var chunks = id.split("/"); chunks[0] = require.tlns[chunks[0]] || chunks[0]; path = require.baseUrl + "/" + chunks.join("/") + ".js" - require.id = name; - importScripts(path); - return require.modules[name].exports; + require.id = id; + importScripts(path); + return require(id); }; + require.modules = {}; require.tlns = {}; require.baseUrl; -var define = function(factory) { - var module = { - exports: {} +var define = function(id, factory) { + if (!factory) { + factory = id; + id = require.id; + } + if (id.indexOf("text!") == 0) + return; + + require.modules[id] = { + factory: function() { + var module = { + exports: {} + }; + var returnExports = factory(require, module.exports, module); + if (returnExports) + module.exports = exports; + return module; + } }; - - var name = require.id; - var returnExports = factory(require, module.exports, module); - if (returnExports) - module.exports = exports; - - require.modules[name] = module; }; function initBaseUrls(baseUrl, topLevelNamespaces) { @@ -81,6 +96,7 @@ onmessage = function(e) { main[msg.command].apply(main, msg.args); else if (msg.init) { initBaseUrls(msg.base, msg.tlns); + require("pilot/fixoldbrowsers"); sender = initSender(); var clazz = require(msg.module)[msg.classname]; main = new clazz(sender); diff --git a/lib/ace/worker/worker_client.js b/lib/ace/worker/worker_client.js index 71d6505e..5e8e3c28 100644 --- a/lib/ace/worker/worker_client.js +++ b/lib/ace/worker/worker_client.js @@ -14,13 +14,19 @@ var EventEmitter = require("pilot/event_emitter").EventEmitter; var WorkerClient = function(baseUrl, topLevelNamespaces, module, classname) { this.callbacks = []; - var workerUrl = require.nameToUrl("ace/worker/host", null, "_"); - var worker = this.$worker = new Worker(workerUrl); - var tlns = {}; - for (var i=0; i