more support for relative module ids
This commit is contained in:
parent
c043d14b8b
commit
0b69b42ade
4 changed files with 60 additions and 44 deletions
|
|
@ -86,8 +86,6 @@ var copy = require('dryice').copy;
|
||||||
|
|
||||||
var aceHome = __dirname;
|
var aceHome = __dirname;
|
||||||
|
|
||||||
console.log('# ace ---------');
|
|
||||||
|
|
||||||
var aceProject = {
|
var aceProject = {
|
||||||
roots: [
|
roots: [
|
||||||
aceHome + '/lib',
|
aceHome + '/lib',
|
||||||
|
|
@ -165,6 +163,8 @@ copy({
|
||||||
});
|
});
|
||||||
|
|
||||||
if (target == "normal") {
|
if (target == "normal") {
|
||||||
|
console.log('# ace ---------');
|
||||||
|
|
||||||
// Create the compressed and uncompressed output files
|
// Create the compressed and uncompressed output files
|
||||||
copy({
|
copy({
|
||||||
source: ace,
|
source: ace,
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,7 @@ modes.forEach(function(m) {
|
||||||
modesByName[m.name] = m;
|
modesByName[m.name] = m;
|
||||||
});
|
});
|
||||||
|
|
||||||
var loreIpsum = require("ace/requirejs/text!demo/kitchen-sink/docs/plaintext.txt");
|
var loreIpsum = require("ace/requirejs/text!./docs/plaintext.txt");
|
||||||
for (var i = 0; i < 5; i++) {
|
for (var i = 0; i < 5; i++) {
|
||||||
loreIpsum += loreIpsum;
|
loreIpsum += loreIpsum;
|
||||||
}
|
}
|
||||||
|
|
@ -142,108 +142,104 @@ for (var i = 0; i < 5; i++) {
|
||||||
var docs = [
|
var docs = [
|
||||||
new Doc(
|
new Doc(
|
||||||
"javascript", "JavaScript",
|
"javascript", "JavaScript",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/javascript.js")
|
require("ace/requirejs/text!./docs/javascript.js")
|
||||||
),
|
),
|
||||||
new WrappedDoc("text", "Plain Text", loreIpsum),
|
new WrappedDoc("text", "Plain Text", loreIpsum),
|
||||||
new Doc(
|
new Doc(
|
||||||
"coffee", "Coffeescript",
|
"coffee", "Coffeescript",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/coffeescript.coffee")
|
require("ace/requirejs/text!./docs/coffeescript.coffee")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"json", "JSON",
|
"json", "JSON",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/json.json")
|
require("ace/requirejs/text!./docs/json.json")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"css", "CSS",
|
"css", "CSS",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/css.css")
|
require("ace/requirejs/text!./docs/css.css")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"scss", "SCSS",
|
"scss", "SCSS",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/scss.scss")
|
require("ace/requirejs/text!./docs/scss.scss")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"html", "HTML",
|
"html", "HTML",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/html.html")
|
require("ace/requirejs/text!./docs/html.html")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"xml", "XML",
|
"xml", "XML",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/xml.xml")
|
require("ace/requirejs/text!./docs/xml.xml")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"svg", "SVG",
|
"svg", "SVG",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/svg.svg")
|
require("ace/requirejs/text!./docs/svg.svg")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"php", "PHP",
|
"php", "PHP",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/php.php")
|
require("ace/requirejs/text!./docs/php.php")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"coldfusion", "ColdFusion",
|
"coldfusion", "ColdFusion",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/coldfusion.cfm")
|
require("ace/requirejs/text!./docs/coldfusion.cfm")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"python", "Python",
|
"python", "Python",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/python.py")
|
require("ace/requirejs/text!./docs/python.py")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"ruby", "Ruby",
|
"ruby", "Ruby",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/ruby.rb")
|
require("ace/requirejs/text!./docs/ruby.rb")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"perl", "Perl",
|
"perl", "Perl",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/perl.pl")
|
require("ace/requirejs/text!./docs/perl.pl")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"ocaml", "OCaml",
|
"ocaml", "OCaml",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/ocaml.ml")
|
require("ace/requirejs/text!./docs/ocaml.ml")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"lua", "Lua",
|
"lua", "Lua",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/lua.lua")
|
require("ace/requirejs/text!./docs/lua.lua")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"java", "Java",
|
"java", "Java",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/java.java")
|
require("ace/requirejs/text!./docs/java.java")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"clojure", "Clojure",
|
"clojure", "Clojure",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/clojure.clj")
|
require("ace/requirejs/text!./docs/clojure.clj")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"groovy", "Groovy",
|
"groovy", "Groovy",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/groovy.groovy")
|
require("ace/requirejs/text!./docs/groovy.groovy")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"scala", "Scala",
|
"scala", "Scala",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/scala.scala")
|
require("ace/requirejs/text!./docs/scala.scala")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"csharp", "C#",
|
"csharp", "C#",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/csharp.cs")
|
require("ace/requirejs/text!./docs/csharp.cs")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"powershell", "Powershell",
|
"powershell", "Powershell",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/powershell.ps1")
|
require("ace/requirejs/text!./docs/powershell.ps1")
|
||||||
),
|
),
|
||||||
new Doc(
|
new Doc(
|
||||||
"c_cpp", "C/C++",
|
"c_cpp", "C/C++",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/cpp.cpp")
|
require("ace/requirejs/text!./docs/cpp.cpp")
|
||||||
),
|
|
||||||
new Doc(
|
|
||||||
"markdown", "Markdown",
|
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/markdown.md")
|
|
||||||
),
|
),
|
||||||
new WrappedDoc(
|
new WrappedDoc(
|
||||||
"markdown", "Markdown",
|
"markdown", "Markdown",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/markdown.md")
|
require("ace/requirejs/text!./docs/markdown.md")
|
||||||
),
|
),
|
||||||
new WrappedDoc(
|
new WrappedDoc(
|
||||||
"textile", "Textile",
|
"textile", "Textile",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/textile.textile")
|
require("ace/requirejs/text!./docs/textile.textile")
|
||||||
),
|
),
|
||||||
new WrappedDoc(
|
new WrappedDoc(
|
||||||
"latex", "LaTeX",
|
"latex", "LaTeX",
|
||||||
require("ace/requirejs/text!demo/kitchen-sink/docs/latex.tex")
|
require("ace/requirejs/text!./docs/latex.tex")
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -349,7 +345,7 @@ bindDropdown("mode", function(value) {
|
||||||
});
|
});
|
||||||
|
|
||||||
bindDropdown("theme", function(value) {
|
bindDropdown("theme", function(value) {
|
||||||
if (require.packaged) {
|
if (window.require.packaged) {
|
||||||
loadTheme(value, function() {
|
loadTheme(value, function() {
|
||||||
env.editor.setTheme(value);
|
env.editor.setTheme(value);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,29 @@ var window = {
|
||||||
console: console
|
console: console
|
||||||
};
|
};
|
||||||
|
|
||||||
var require = function(id) {
|
var normalizeModule = function(parentId, moduleName) {
|
||||||
console.log("require " + id)
|
// normalize plugin requires
|
||||||
|
if (moduleName.indexOf("!") !== -1) {
|
||||||
|
var chunks = moduleName.split("!");
|
||||||
|
return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
|
||||||
|
}
|
||||||
|
// normalize relative requires
|
||||||
|
if (moduleName.charAt(0) == ".") {
|
||||||
|
var base = parentId.split("/").slice(0, -1).join("/");
|
||||||
|
var moduleName = base + "/" + moduleName;
|
||||||
|
|
||||||
|
while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
|
||||||
|
var previous = moduleName;
|
||||||
|
var moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return moduleName;
|
||||||
|
};
|
||||||
|
|
||||||
|
var require = function(parentId, id) {
|
||||||
|
var id = normalizeModule(parentId, id);
|
||||||
|
|
||||||
var module = require.modules[id];
|
var module = require.modules[id];
|
||||||
if (module) {
|
if (module) {
|
||||||
if (!module.initialized) {
|
if (!module.initialized) {
|
||||||
|
|
@ -23,9 +44,8 @@ var require = function(id) {
|
||||||
path = chunks.join("/") + ".js";
|
path = chunks.join("/") + ".js";
|
||||||
|
|
||||||
require.id = id;
|
require.id = id;
|
||||||
// console.log("require " + path + " " + id)
|
|
||||||
importScripts(path);
|
importScripts(path);
|
||||||
return require(id);
|
return require(parentId, id);
|
||||||
};
|
};
|
||||||
|
|
||||||
require.modules = {};
|
require.modules = {};
|
||||||
|
|
@ -38,7 +58,7 @@ var define = function(id, deps, factory) {
|
||||||
factory = id;
|
factory = id;
|
||||||
id = require.id;
|
id = require.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id.indexOf("text!") === 0)
|
if (id.indexOf("text!") === 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -47,7 +67,7 @@ var define = function(id, deps, factory) {
|
||||||
var module = {
|
var module = {
|
||||||
exports: {}
|
exports: {}
|
||||||
};
|
};
|
||||||
var returnExports = factory(require, module.exports, module);
|
var returnExports = factory(require.bind(null, id), module.exports, module);
|
||||||
if (returnExports)
|
if (returnExports)
|
||||||
module.exports = returnExports;
|
module.exports = returnExports;
|
||||||
return module;
|
return module;
|
||||||
|
|
@ -61,8 +81,8 @@ function initBaseUrls(topLevelNamespaces) {
|
||||||
|
|
||||||
function initSender() {
|
function initSender() {
|
||||||
|
|
||||||
var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
|
var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
|
||||||
var oop = require("ace/lib/oop");
|
var oop = require(null, "ace/lib/oop");
|
||||||
|
|
||||||
var Sender = function() {};
|
var Sender = function() {};
|
||||||
|
|
||||||
|
|
@ -101,9 +121,9 @@ onmessage = function(e) {
|
||||||
}
|
}
|
||||||
else if (msg.init) {
|
else if (msg.init) {
|
||||||
initBaseUrls(msg.tlns);
|
initBaseUrls(msg.tlns);
|
||||||
require("ace/lib/fixoldbrowsers");
|
require(null, "ace/lib/fixoldbrowsers");
|
||||||
sender = initSender();
|
sender = initSender();
|
||||||
var clazz = require(msg.module)[msg.classname];
|
var clazz = require(null, msg.module)[msg.classname];
|
||||||
main = new clazz(sender);
|
main = new clazz(sender);
|
||||||
}
|
}
|
||||||
else if (msg.event && sender) {
|
else if (msg.event && sender) {
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
this.changeListener = this.changeListener.bind(this);
|
||||||
|
|
||||||
if (require.packaged) {
|
if (window.require.packaged) {
|
||||||
var base = this.$guessBasePath();
|
var base = this.$guessBasePath();
|
||||||
var worker = this.$worker = new Worker(base + packagedJs);
|
var worker = this.$worker = new Worker(base + packagedJs);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue