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;
|
||||
|
||||
console.log('# ace ---------');
|
||||
|
||||
var aceProject = {
|
||||
roots: [
|
||||
aceHome + '/lib',
|
||||
|
|
@ -165,6 +163,8 @@ copy({
|
|||
});
|
||||
|
||||
if (target == "normal") {
|
||||
console.log('# ace ---------');
|
||||
|
||||
// Create the compressed and uncompressed output files
|
||||
copy({
|
||||
source: ace,
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ modes.forEach(function(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++) {
|
||||
loreIpsum += loreIpsum;
|
||||
}
|
||||
|
|
@ -142,108 +142,104 @@ for (var i = 0; i < 5; i++) {
|
|||
var docs = [
|
||||
new Doc(
|
||||
"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 Doc(
|
||||
"coffee", "Coffeescript",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/coffeescript.coffee")
|
||||
require("ace/requirejs/text!./docs/coffeescript.coffee")
|
||||
),
|
||||
new Doc(
|
||||
"json", "JSON",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/json.json")
|
||||
require("ace/requirejs/text!./docs/json.json")
|
||||
),
|
||||
new Doc(
|
||||
"css", "CSS",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/css.css")
|
||||
require("ace/requirejs/text!./docs/css.css")
|
||||
),
|
||||
new Doc(
|
||||
"scss", "SCSS",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/scss.scss")
|
||||
require("ace/requirejs/text!./docs/scss.scss")
|
||||
),
|
||||
new Doc(
|
||||
"html", "HTML",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/html.html")
|
||||
require("ace/requirejs/text!./docs/html.html")
|
||||
),
|
||||
new Doc(
|
||||
"xml", "XML",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/xml.xml")
|
||||
require("ace/requirejs/text!./docs/xml.xml")
|
||||
),
|
||||
new Doc(
|
||||
"svg", "SVG",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/svg.svg")
|
||||
require("ace/requirejs/text!./docs/svg.svg")
|
||||
),
|
||||
new Doc(
|
||||
"php", "PHP",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/php.php")
|
||||
require("ace/requirejs/text!./docs/php.php")
|
||||
),
|
||||
new Doc(
|
||||
"coldfusion", "ColdFusion",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/coldfusion.cfm")
|
||||
require("ace/requirejs/text!./docs/coldfusion.cfm")
|
||||
),
|
||||
new Doc(
|
||||
"python", "Python",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/python.py")
|
||||
require("ace/requirejs/text!./docs/python.py")
|
||||
),
|
||||
new Doc(
|
||||
"ruby", "Ruby",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/ruby.rb")
|
||||
require("ace/requirejs/text!./docs/ruby.rb")
|
||||
),
|
||||
new Doc(
|
||||
"perl", "Perl",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/perl.pl")
|
||||
require("ace/requirejs/text!./docs/perl.pl")
|
||||
),
|
||||
new Doc(
|
||||
"ocaml", "OCaml",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/ocaml.ml")
|
||||
require("ace/requirejs/text!./docs/ocaml.ml")
|
||||
),
|
||||
new Doc(
|
||||
"lua", "Lua",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/lua.lua")
|
||||
require("ace/requirejs/text!./docs/lua.lua")
|
||||
),
|
||||
new Doc(
|
||||
"java", "Java",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/java.java")
|
||||
require("ace/requirejs/text!./docs/java.java")
|
||||
),
|
||||
new Doc(
|
||||
"clojure", "Clojure",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/clojure.clj")
|
||||
require("ace/requirejs/text!./docs/clojure.clj")
|
||||
),
|
||||
new Doc(
|
||||
"groovy", "Groovy",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/groovy.groovy")
|
||||
require("ace/requirejs/text!./docs/groovy.groovy")
|
||||
),
|
||||
new Doc(
|
||||
"scala", "Scala",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/scala.scala")
|
||||
require("ace/requirejs/text!./docs/scala.scala")
|
||||
),
|
||||
new Doc(
|
||||
"csharp", "C#",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/csharp.cs")
|
||||
require("ace/requirejs/text!./docs/csharp.cs")
|
||||
),
|
||||
new Doc(
|
||||
"powershell", "Powershell",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/powershell.ps1")
|
||||
require("ace/requirejs/text!./docs/powershell.ps1")
|
||||
),
|
||||
new Doc(
|
||||
"c_cpp", "C/C++",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/cpp.cpp")
|
||||
),
|
||||
new Doc(
|
||||
"markdown", "Markdown",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/markdown.md")
|
||||
require("ace/requirejs/text!./docs/cpp.cpp")
|
||||
),
|
||||
new WrappedDoc(
|
||||
"markdown", "Markdown",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/markdown.md")
|
||||
require("ace/requirejs/text!./docs/markdown.md")
|
||||
),
|
||||
new WrappedDoc(
|
||||
"textile", "Textile",
|
||||
require("ace/requirejs/text!demo/kitchen-sink/docs/textile.textile")
|
||||
require("ace/requirejs/text!./docs/textile.textile")
|
||||
),
|
||||
new WrappedDoc(
|
||||
"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) {
|
||||
if (require.packaged) {
|
||||
if (window.require.packaged) {
|
||||
loadTheme(value, function() {
|
||||
env.editor.setTheme(value);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -7,8 +7,29 @@ var window = {
|
|||
console: console
|
||||
};
|
||||
|
||||
var require = function(id) {
|
||||
console.log("require " + id)
|
||||
var normalizeModule = function(parentId, moduleName) {
|
||||
// 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];
|
||||
if (module) {
|
||||
if (!module.initialized) {
|
||||
|
|
@ -23,9 +44,8 @@ var require = function(id) {
|
|||
path = chunks.join("/") + ".js";
|
||||
|
||||
require.id = id;
|
||||
// console.log("require " + path + " " + id)
|
||||
importScripts(path);
|
||||
return require(id);
|
||||
return require(parentId, id);
|
||||
};
|
||||
|
||||
require.modules = {};
|
||||
|
|
@ -38,7 +58,7 @@ var define = function(id, deps, factory) {
|
|||
factory = id;
|
||||
id = require.id;
|
||||
}
|
||||
|
||||
|
||||
if (id.indexOf("text!") === 0)
|
||||
return;
|
||||
|
||||
|
|
@ -47,7 +67,7 @@ var define = function(id, deps, factory) {
|
|||
var module = {
|
||||
exports: {}
|
||||
};
|
||||
var returnExports = factory(require, module.exports, module);
|
||||
var returnExports = factory(require.bind(null, id), module.exports, module);
|
||||
if (returnExports)
|
||||
module.exports = returnExports;
|
||||
return module;
|
||||
|
|
@ -61,8 +81,8 @@ function initBaseUrls(topLevelNamespaces) {
|
|||
|
||||
function initSender() {
|
||||
|
||||
var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
|
||||
var oop = require("ace/lib/oop");
|
||||
var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
|
||||
var oop = require(null, "ace/lib/oop");
|
||||
|
||||
var Sender = function() {};
|
||||
|
||||
|
|
@ -101,9 +121,9 @@ onmessage = function(e) {
|
|||
}
|
||||
else if (msg.init) {
|
||||
initBaseUrls(msg.tlns);
|
||||
require("ace/lib/fixoldbrowsers");
|
||||
require(null, "ace/lib/fixoldbrowsers");
|
||||
sender = initSender();
|
||||
var clazz = require(msg.module)[msg.classname];
|
||||
var clazz = require(null, msg.module)[msg.classname];
|
||||
main = new clazz(sender);
|
||||
}
|
||||
else if (msg.event && sender) {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
|
|||
|
||||
this.changeListener = this.changeListener.bind(this);
|
||||
|
||||
if (require.packaged) {
|
||||
if (window.require.packaged) {
|
||||
var base = this.$guessBasePath();
|
||||
var worker = this.$worker = new Worker(base + packagedJs);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue