Merge master
This commit is contained in:
commit
c207da630e
85 changed files with 7562 additions and 5811 deletions
|
|
@ -232,7 +232,7 @@ function buildAce(aceProject, options) {
|
||||||
"tomorrow_night_blue", "tomorrow_night_bright", "tomorrow_night_eighties",
|
"tomorrow_night_blue", "tomorrow_night_bright", "tomorrow_night_eighties",
|
||||||
"twilight", "vibrant_ink"
|
"twilight", "vibrant_ink"
|
||||||
],
|
],
|
||||||
workers: ["javascript", "coffee", "css"],
|
workers: ["javascript", "coffee", "css", "json"],
|
||||||
keybindings: ["vim", "emacs"]
|
keybindings: ["vim", "emacs"]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -244,7 +244,7 @@ exportAce(ACE_NAMESPACE);
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
|
||||||
define('kitchen-sink/demo', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/net', 'ace/lib/event', 'ace/theme/textmate', 'ace/edit_session', 'ace/undomanager', 'ace/keyboard/keybinding/vim', 'ace/keyboard/keybinding/emacs', 'ace/keyboard/hash_handler', 'ace/mode/c_cpp', 'ace/mode/clojure', 'ace/mode/coffee', 'ace/mode/coldfusion', 'ace/mode/csharp', 'ace/mode/css', 'ace/mode/groovy', 'ace/mode/haxe', 'ace/mode/html', 'ace/mode/java', 'ace/mode/javascript', 'ace/mode/json', 'ace/mode/latex', 'ace/mode/lua', 'ace/mode/markdown', 'ace/mode/ocaml', 'ace/mode/perl', 'ace/mode/pgsql', 'ace/mode/php', 'ace/mode/powershell', 'ace/mode/python', 'ace/mode/scala', 'ace/mode/scss', 'ace/mode/ruby', 'ace/mode/sql', 'ace/mode/SVG', 'ace/mode/text', 'ace/mode/textile', 'ace/mode/xml', 'text!kitchen-sink/docs/plaintext.txt', 'text!kitchen-sink/docs/javascript.js', 'text!kitchen-sink/docs/coffeescript.coffee', 'text!kitchen-sink/docs/json.json', 'text!kitchen-sink/docs/css.css', 'text!kitchen-sink/docs/scss.scss', 'text!kitchen-sink/docs/html.html', 'text!kitchen-sink/docs/xml.xml', 'text!kitchen-sink/docs/svg.svg', 'text!kitchen-sink/docs/php.php', 'text!kitchen-sink/docs/coldfusion.cfm', 'text!kitchen-sink/docs/python.py', 'text!kitchen-sink/docs/ruby.rb', 'text!kitchen-sink/docs/perl.pl', 'text!kitchen-sink/docs/ocaml.ml', 'text!kitchen-sink/docs/lua.lua', 'text!kitchen-sink/docs/java.java', 'text!kitchen-sink/docs/clojure.clj', 'text!kitchen-sink/docs/groovy.groovy', 'text!kitchen-sink/docs/scala.scala', 'text!kitchen-sink/docs/csharp.cs', 'text!kitchen-sink/docs/powershell.ps1', 'text!kitchen-sink/docs/cpp.cpp', 'text!kitchen-sink/docs/Haxe.hx', 'text!kitchen-sink/docs/markdown.md', 'text!kitchen-sink/docs/textile.textile', 'text!kitchen-sink/docs/latex.tex', 'text!kitchen-sink/docs/sql.sql', 'text!kitchen-sink/docs/pgsql.pgsql', 'ace/split'], function(require, exports, module) {
|
define('kitchen-sink/demo', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/net', 'ace/lib/event', 'ace/theme/textmate', 'ace/edit_session', 'ace/undomanager', 'ace/keyboard/keybinding/vim', 'ace/keyboard/keybinding/emacs', 'ace/keyboard/hash_handler', 'ace/mode/c_cpp', 'ace/mode/clojure', 'ace/mode/coffee', 'ace/mode/coldfusion', 'ace/mode/csharp', 'ace/mode/css', 'ace/mode/groovy', 'ace/mode/haxe', 'ace/mode/html', 'ace/mode/java', 'ace/mode/javascript', 'ace/mode/json', 'ace/mode/latex', 'ace/mode/lua', 'ace/mode/markdown', 'ace/mode/ocaml', 'ace/mode/perl', 'ace/mode/pgsql', 'ace/mode/php', 'ace/mode/powershell', 'ace/mode/python', 'ace/mode/scala', 'ace/mode/scss', 'ace/mode/ruby', 'ace/mode/sql', 'ace/mode/svg', 'ace/mode/text', 'ace/mode/textile', 'ace/mode/xml', 'text!kitchen-sink/docs/plaintext.txt', 'text!kitchen-sink/docs/javascript.js', 'text!kitchen-sink/docs/coffeescript.coffee', 'text!kitchen-sink/docs/json.json', 'text!kitchen-sink/docs/css.css', 'text!kitchen-sink/docs/scss.scss', 'text!kitchen-sink/docs/html.html', 'text!kitchen-sink/docs/xml.xml', 'text!kitchen-sink/docs/svg.svg', 'text!kitchen-sink/docs/php.php', 'text!kitchen-sink/docs/coldfusion.cfm', 'text!kitchen-sink/docs/python.py', 'text!kitchen-sink/docs/ruby.rb', 'text!kitchen-sink/docs/perl.pl', 'text!kitchen-sink/docs/ocaml.ml', 'text!kitchen-sink/docs/lua.lua', 'text!kitchen-sink/docs/java.java', 'text!kitchen-sink/docs/clojure.clj', 'text!kitchen-sink/docs/groovy.groovy', 'text!kitchen-sink/docs/scala.scala', 'text!kitchen-sink/docs/csharp.cs', 'text!kitchen-sink/docs/powershell.ps1', 'text!kitchen-sink/docs/cpp.cpp', 'text!kitchen-sink/docs/Haxe.hx', 'text!kitchen-sink/docs/markdown.md', 'text!kitchen-sink/docs/textile.textile', 'text!kitchen-sink/docs/latex.tex', 'text!kitchen-sink/docs/sql.sql', 'text!kitchen-sink/docs/pgsql.pgsql', 'ace/split'], function(require, exports, module) {
|
||||||
|
|
||||||
require("ace/lib/fixoldbrowsers");
|
require("ace/lib/fixoldbrowsers");
|
||||||
var env = {};
|
var env = {};
|
||||||
|
|
@ -328,7 +328,7 @@ var modes = [
|
||||||
new Mode("scss", "SCSS", require("ace/mode/scss").Mode, ["scss"]),
|
new Mode("scss", "SCSS", require("ace/mode/scss").Mode, ["scss"]),
|
||||||
new Mode("ruby", "Ruby", require("ace/mode/ruby").Mode, ["rb"]),
|
new Mode("ruby", "Ruby", require("ace/mode/ruby").Mode, ["rb"]),
|
||||||
new Mode("sql", "SQL", require("ace/mode/sql").Mode, ["sql"]),
|
new Mode("sql", "SQL", require("ace/mode/sql").Mode, ["sql"]),
|
||||||
new Mode("svg", "SVG", require("ace/mode/SVG").Mode, ["svg"]),
|
new Mode("svg", "SVG", require("ace/mode/svg").Mode, ["svg"]),
|
||||||
new Mode("text", "Text", require("ace/mode/text").Mode, ["txt"]),
|
new Mode("text", "Text", require("ace/mode/text").Mode, ["txt"]),
|
||||||
new Mode("textile", "Textile", require("ace/mode/textile").Mode, ["textile"]),
|
new Mode("textile", "Textile", require("ace/mode/textile").Mode, ["textile"]),
|
||||||
new Mode("xml", "XML", require("ace/mode/xml").Mode, ["xml"])
|
new Mode("xml", "XML", require("ace/mode/xml").Mode, ["xml"])
|
||||||
|
|
@ -845,7 +845,7 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -910,7 +910,8 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
@ -2771,7 +2772,7 @@ exports.hasCssString = function(id, doc) {
|
||||||
|
|
||||||
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].title === id) return true;
|
if (sheets[index++].owningElement.id === id) return true;
|
||||||
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].id === id) return true;
|
if (sheets[index++].id === id) return true;
|
||||||
|
|
@ -2792,7 +2793,7 @@ exports.importCssString = function importCssString(cssText, id, doc) {
|
||||||
style = doc.createStyleSheet();
|
style = doc.createStyleSheet();
|
||||||
style.cssText = cssText;
|
style.cssText = cssText;
|
||||||
if (id)
|
if (id)
|
||||||
style.title = id;
|
style.owningElement.id = id;
|
||||||
} else {
|
} else {
|
||||||
style = doc.createElementNS
|
style = doc.createElementNS
|
||||||
? doc.createElementNS(XHTML_NS, "style")
|
? doc.createElementNS(XHTML_NS, "style")
|
||||||
|
|
@ -2938,8 +2939,7 @@ exports.getParentWindow = function(document) {
|
||||||
return document.defaultView || document.parentWindow;
|
return document.defaultView || document.parentWindow;
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});/* ***** BEGIN LICENSE BLOCK *****
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
*
|
*
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
|
@ -11482,7 +11482,7 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
||||||
oop.implement(this, EventEmitter);
|
oop.implement(this, EventEmitter);
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
this.$normalizePath = function(path) {
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
path = path.replace(/^[a-z]+:\/\/[^\/]+/, ""); // Remove domain name and rebuild it
|
||||||
path = location.protocol + "//" + location.host
|
path = location.protocol + "//" + location.host
|
||||||
// paths starting with a slash are relative to the root (host)
|
// paths starting with a slash are relative to the root (host)
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
||||||
|
|
@ -14389,7 +14389,7 @@ exports.JavaHighlightRules = JavaHighlightRules;
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
|
define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/worker/worker_client'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
|
|
@ -14399,6 +14399,7 @@ var HighlightRules = require("./json_highlight_rules").JsonHighlightRules;
|
||||||
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
||||||
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
var WorkerClient = require("../worker/worker_client").WorkerClient;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
||||||
|
|
@ -14430,7 +14431,23 @@ oop.inherits(Mode, TextMode);
|
||||||
this.autoOutdent = function(state, doc, row) {
|
this.autoOutdent = function(state, doc, row) {
|
||||||
this.$outdent.autoOutdent(doc, row);
|
this.$outdent.autoOutdent(doc, row);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.createWorker = function(session) {
|
||||||
|
var worker = new WorkerClient(["ace"], "worker-json.js", "ace/mode/json_worker", "JsonWorker");
|
||||||
|
worker.attachToDocument(session.getDocument());
|
||||||
|
|
||||||
|
worker.on("error", function(e) {
|
||||||
|
session.setAnnotations([e.data]);
|
||||||
|
});
|
||||||
|
|
||||||
|
worker.on("ok", function() {
|
||||||
|
session.clearAnnotations();
|
||||||
|
});
|
||||||
|
|
||||||
|
return worker;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}).call(Mode.prototype);
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
exports.Mode = Mode;
|
exports.Mode = Mode;
|
||||||
|
|
@ -19685,7 +19702,7 @@ exports.SqlHighlightRules = SqlHighlightRules;
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
define('ace/mode/SVG', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/svg_highlight_rules', 'ace/mode/folding/mixed', 'ace/mode/folding/xml', 'ace/mode/folding/cstyle'], function(require, exports, module) {
|
define('ace/mode/svg', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/svg_highlight_rules', 'ace/mode/folding/mixed', 'ace/mode/folding/xml', 'ace/mode/folding/cstyle'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,7 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -263,7 +263,8 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
@ -1538,10 +1539,10 @@ exports.implement = function(proto, mixin) {
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
define('ace/mode/coffee_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/coffee/coffee-script'], function(require, exports, module) {
|
define('ace/mode/coffee_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/coffee/coffee-script'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
var Mirror = require("../worker/mirror").Mirror;
|
var Mirror = require("../worker/mirror").Mirror;
|
||||||
var coffee = require("../mode/coffee/coffee-script");
|
var coffee = require("../mode/coffee/coffee-script");
|
||||||
|
|
@ -1557,29 +1558,29 @@ var Worker = exports.Worker = function(sender) {
|
||||||
oop.inherits(Worker, Mirror);
|
oop.inherits(Worker, Mirror);
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
this.onUpdate = function() {
|
this.onUpdate = function() {
|
||||||
var value = this.doc.getValue();
|
var value = this.doc.getValue();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
coffee.parse(value);
|
coffee.parse(value);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
var m = e.message.match(/Parse error on line (\d+): (.*)/);
|
var m = e.message.match(/Parse error on line (\d+): (.*)/);
|
||||||
if (m) {
|
if (m) {
|
||||||
this.sender.emit("error", {
|
this.sender.emit("error", {
|
||||||
row: parseInt(m[1]) - 1,
|
row: parseInt(m[1], 10) - 1,
|
||||||
column: null,
|
column: null,
|
||||||
text: m[2],
|
text: m[2],
|
||||||
type: "error"
|
type: "error"
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof SyntaxError) {
|
if (e instanceof SyntaxError) {
|
||||||
var m = e.message.match(/ on line (\d+)/);
|
var m = e.message.match(/ on line (\d+)/);
|
||||||
if (m) {
|
if (m) {
|
||||||
this.sender.emit("error", {
|
this.sender.emit("error", {
|
||||||
row: parseInt(m[1]) - 1,
|
row: parseInt(m[1], 10) - 1,
|
||||||
column: null,
|
column: null,
|
||||||
text: e.message.replace(m[0], ""),
|
text: e.message.replace(m[0], ""),
|
||||||
type: "error"
|
type: "error"
|
||||||
|
|
@ -1590,7 +1591,7 @@ oop.inherits(Worker, Mirror);
|
||||||
}
|
}
|
||||||
this.sender.emit("ok");
|
this.sender.emit("ok");
|
||||||
};
|
};
|
||||||
|
|
||||||
}).call(Worker.prototype);
|
}).call(Worker.prototype);
|
||||||
|
|
||||||
});define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
|
});define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,7 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -263,7 +263,8 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,7 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -263,7 +263,8 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
|
||||||
3062
build/demo/kitchen-sink/worker-json.js
Normal file
3062
build/demo/kitchen-sink/worker-json.js
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
Ace
|
Ace
|
||||||
version 0.2.0
|
version 0.2.0
|
||||||
commit 182ba8345ec81541f751a9151ce8aa45021422dc
|
commit 413607a991bab8489a4c8466b98ef4bc47ab32de
|
||||||
|
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -241,7 +241,7 @@ exportAce(ACE_NAMESPACE);
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
ace.define('ace/ace', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/dom', 'ace/lib/event', 'ace/editor', 'ace/edit_session', 'ace/undomanager', 'ace/virtual_renderer', 'ace/theme/textmate'], function(require, exports, module) {
|
ace.define('ace/ace', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/dom', 'ace/lib/event', 'ace/editor', 'ace/edit_session', 'ace/undomanager', 'ace/virtual_renderer', 'ace/worker/worker_client', 'ace/theme/textmate'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
require("./lib/fixoldbrowsers");
|
require("./lib/fixoldbrowsers");
|
||||||
|
|
@ -254,6 +254,8 @@ var EditSession = require("./edit_session").EditSession;
|
||||||
var UndoManager = require("./undomanager").UndoManager;
|
var UndoManager = require("./undomanager").UndoManager;
|
||||||
var Renderer = require("./virtual_renderer").VirtualRenderer;
|
var Renderer = require("./virtual_renderer").VirtualRenderer;
|
||||||
|
|
||||||
|
require("./worker/worker_client");
|
||||||
|
|
||||||
exports.edit = function(el) {
|
exports.edit = function(el) {
|
||||||
if (typeof(el) == "string") {
|
if (typeof(el) == "string") {
|
||||||
el = document.getElementById(el);
|
el = document.getElementById(el);
|
||||||
|
|
@ -342,7 +344,7 @@ ace.define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -407,7 +409,8 @@ ace.define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
@ -1589,7 +1592,7 @@ exports.hasCssString = function(id, doc) {
|
||||||
|
|
||||||
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].title === id) return true;
|
if (sheets[index++].owningElement.id === id) return true;
|
||||||
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].id === id) return true;
|
if (sheets[index++].id === id) return true;
|
||||||
|
|
@ -1610,7 +1613,7 @@ exports.importCssString = function importCssString(cssText, id, doc) {
|
||||||
style = doc.createStyleSheet();
|
style = doc.createStyleSheet();
|
||||||
style.cssText = cssText;
|
style.cssText = cssText;
|
||||||
if (id)
|
if (id)
|
||||||
style.title = id;
|
style.owningElement.id = id;
|
||||||
} else {
|
} else {
|
||||||
style = doc.createElementNS
|
style = doc.createElementNS
|
||||||
? doc.createElementNS(XHTML_NS, "style")
|
? doc.createElementNS(XHTML_NS, "style")
|
||||||
|
|
@ -1756,8 +1759,7 @@ exports.getParentWindow = function(document) {
|
||||||
return document.defaultView || document.parentWindow;
|
return document.defaultView || document.parentWindow;
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});/* ***** BEGIN LICENSE BLOCK *****
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
*
|
*
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
|
@ -14039,6 +14041,195 @@ ace.define("text!ace/css/editor.css", [], "@import url(//fonts.googleapis.com/cs
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
||||||
|
|
||||||
|
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
||||||
|
|
||||||
|
this.changeListener = this.changeListener.bind(this);
|
||||||
|
|
||||||
|
if (module.packaged) {
|
||||||
|
var base = this.$guessBasePath();
|
||||||
|
this.$worker = new Worker(base + packagedJs);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
||||||
|
this.$worker = new Worker(workerUrl);
|
||||||
|
|
||||||
|
var tlns = {};
|
||||||
|
for (var i=0; i<topLevelNamespaces.length; i++) {
|
||||||
|
var ns = topLevelNamespaces[i];
|
||||||
|
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
||||||
|
|
||||||
|
tlns[ns] = path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$worker.postMessage({
|
||||||
|
init : true,
|
||||||
|
tlns: tlns,
|
||||||
|
module: mod,
|
||||||
|
classname: classname
|
||||||
|
});
|
||||||
|
|
||||||
|
this.callbackId = 1;
|
||||||
|
this.callbacks = {};
|
||||||
|
|
||||||
|
var _self = this;
|
||||||
|
this.$worker.onerror = function(e) {
|
||||||
|
window.console && console.log && console.log(e);
|
||||||
|
throw e;
|
||||||
|
};
|
||||||
|
this.$worker.onmessage = function(e) {
|
||||||
|
var msg = e.data;
|
||||||
|
switch(msg.type) {
|
||||||
|
case "log":
|
||||||
|
window.console && console.log && console.log(msg.data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "event":
|
||||||
|
_self._emit(msg.name, {data: msg.data});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "call":
|
||||||
|
var callback = _self.callbacks[msg.id];
|
||||||
|
if (callback) {
|
||||||
|
callback(msg.data);
|
||||||
|
delete _self.callbacks[msg.id];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
(function(){
|
||||||
|
|
||||||
|
oop.implement(this, EventEmitter);
|
||||||
|
|
||||||
|
this.$normalizePath = function(path) {
|
||||||
|
path = path.replace(/^[a-z]+:\/\/[^\/]+/, ""); // Remove domain name and rebuild it
|
||||||
|
path = location.protocol + "//" + location.host
|
||||||
|
// paths starting with a slash are relative to the root (host)
|
||||||
|
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
||||||
|
+ "/" + path.replace(/^[\/]+/, "");
|
||||||
|
return path;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$guessBasePath = function() {
|
||||||
|
if (require.aceBaseUrl)
|
||||||
|
return require.aceBaseUrl;
|
||||||
|
|
||||||
|
var scripts = document.getElementsByTagName("script");
|
||||||
|
for (var i=0; i<scripts.length; i++) {
|
||||||
|
var script = scripts[i];
|
||||||
|
|
||||||
|
var base = script.getAttribute("data-ace-base");
|
||||||
|
if (base)
|
||||||
|
return base.replace(/\/*$/, "/");
|
||||||
|
|
||||||
|
var src = script.src || script.getAttribute("src");
|
||||||
|
if (!src) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
||||||
|
if (m)
|
||||||
|
return m[1] || m[2];
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
};
|
||||||
|
|
||||||
|
this.terminate = function() {
|
||||||
|
this._emit("terminate", {});
|
||||||
|
this.$worker.terminate();
|
||||||
|
this.$worker = null;
|
||||||
|
this.$doc.removeEventListener("change", this.changeListener);
|
||||||
|
this.$doc = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.send = function(cmd, args) {
|
||||||
|
this.$worker.postMessage({command: cmd, args: args});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.call = function(cmd, args, callback) {
|
||||||
|
if (callback) {
|
||||||
|
var id = this.callbackId++;
|
||||||
|
this.callbacks[id] = callback;
|
||||||
|
args.push(id);
|
||||||
|
}
|
||||||
|
this.send(cmd, args);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.emit = function(event, data) {
|
||||||
|
try {
|
||||||
|
// firefox refuses to clone objects which have function properties
|
||||||
|
// TODO: cleanup event
|
||||||
|
this.$worker.postMessage({event: event, data: {data: data.data}});
|
||||||
|
}
|
||||||
|
catch(ex) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.attachToDocument = function(doc) {
|
||||||
|
if(this.$doc)
|
||||||
|
this.terminate();
|
||||||
|
|
||||||
|
this.$doc = doc;
|
||||||
|
this.call("setValue", [doc.getValue()]);
|
||||||
|
doc.on("change", this.changeListener);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.changeListener = function(e) {
|
||||||
|
e.range = {
|
||||||
|
start: e.data.range.start,
|
||||||
|
end: e.data.range.end
|
||||||
|
};
|
||||||
|
this.emit("change", e);
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(WorkerClient.prototype);
|
||||||
|
|
||||||
|
exports.WorkerClient = WorkerClient;
|
||||||
|
|
||||||
|
});
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is Ajax.org Code Editor (ACE).
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* Ajax.org B.V.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Fabian Jakobs <fabian AT ajax DOT org>
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
ace.define('ace/theme/textmate', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) {
|
ace.define('ace/theme/textmate', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -241,7 +241,7 @@ exportAce(ACE_NAMESPACE);
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
define('ace/ace', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/dom', 'ace/lib/event', 'ace/editor', 'ace/edit_session', 'ace/undomanager', 'ace/virtual_renderer', 'ace/theme/textmate'], function(require, exports, module) {
|
define('ace/ace', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/dom', 'ace/lib/event', 'ace/editor', 'ace/edit_session', 'ace/undomanager', 'ace/virtual_renderer', 'ace/worker/worker_client', 'ace/theme/textmate'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
require("./lib/fixoldbrowsers");
|
require("./lib/fixoldbrowsers");
|
||||||
|
|
@ -254,6 +254,8 @@ var EditSession = require("./edit_session").EditSession;
|
||||||
var UndoManager = require("./undomanager").UndoManager;
|
var UndoManager = require("./undomanager").UndoManager;
|
||||||
var Renderer = require("./virtual_renderer").VirtualRenderer;
|
var Renderer = require("./virtual_renderer").VirtualRenderer;
|
||||||
|
|
||||||
|
require("./worker/worker_client");
|
||||||
|
|
||||||
exports.edit = function(el) {
|
exports.edit = function(el) {
|
||||||
if (typeof(el) == "string") {
|
if (typeof(el) == "string") {
|
||||||
el = document.getElementById(el);
|
el = document.getElementById(el);
|
||||||
|
|
@ -342,7 +344,7 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -407,7 +409,8 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
@ -1589,7 +1592,7 @@ exports.hasCssString = function(id, doc) {
|
||||||
|
|
||||||
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].title === id) return true;
|
if (sheets[index++].owningElement.id === id) return true;
|
||||||
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].id === id) return true;
|
if (sheets[index++].id === id) return true;
|
||||||
|
|
@ -1610,7 +1613,7 @@ exports.importCssString = function importCssString(cssText, id, doc) {
|
||||||
style = doc.createStyleSheet();
|
style = doc.createStyleSheet();
|
||||||
style.cssText = cssText;
|
style.cssText = cssText;
|
||||||
if (id)
|
if (id)
|
||||||
style.title = id;
|
style.owningElement.id = id;
|
||||||
} else {
|
} else {
|
||||||
style = doc.createElementNS
|
style = doc.createElementNS
|
||||||
? doc.createElementNS(XHTML_NS, "style")
|
? doc.createElementNS(XHTML_NS, "style")
|
||||||
|
|
@ -1756,8 +1759,7 @@ exports.getParentWindow = function(document) {
|
||||||
return document.defaultView || document.parentWindow;
|
return document.defaultView || document.parentWindow;
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});/* ***** BEGIN LICENSE BLOCK *****
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
*
|
*
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
|
@ -14039,6 +14041,195 @@ define("text!ace/css/editor.css", [], "@import url(//fonts.googleapis.com/css?fa
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
||||||
|
|
||||||
|
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
||||||
|
|
||||||
|
this.changeListener = this.changeListener.bind(this);
|
||||||
|
|
||||||
|
if (module.packaged) {
|
||||||
|
var base = this.$guessBasePath();
|
||||||
|
this.$worker = new Worker(base + packagedJs);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
||||||
|
this.$worker = new Worker(workerUrl);
|
||||||
|
|
||||||
|
var tlns = {};
|
||||||
|
for (var i=0; i<topLevelNamespaces.length; i++) {
|
||||||
|
var ns = topLevelNamespaces[i];
|
||||||
|
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
||||||
|
|
||||||
|
tlns[ns] = path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$worker.postMessage({
|
||||||
|
init : true,
|
||||||
|
tlns: tlns,
|
||||||
|
module: mod,
|
||||||
|
classname: classname
|
||||||
|
});
|
||||||
|
|
||||||
|
this.callbackId = 1;
|
||||||
|
this.callbacks = {};
|
||||||
|
|
||||||
|
var _self = this;
|
||||||
|
this.$worker.onerror = function(e) {
|
||||||
|
window.console && console.log && console.log(e);
|
||||||
|
throw e;
|
||||||
|
};
|
||||||
|
this.$worker.onmessage = function(e) {
|
||||||
|
var msg = e.data;
|
||||||
|
switch(msg.type) {
|
||||||
|
case "log":
|
||||||
|
window.console && console.log && console.log(msg.data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "event":
|
||||||
|
_self._emit(msg.name, {data: msg.data});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "call":
|
||||||
|
var callback = _self.callbacks[msg.id];
|
||||||
|
if (callback) {
|
||||||
|
callback(msg.data);
|
||||||
|
delete _self.callbacks[msg.id];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
(function(){
|
||||||
|
|
||||||
|
oop.implement(this, EventEmitter);
|
||||||
|
|
||||||
|
this.$normalizePath = function(path) {
|
||||||
|
path = path.replace(/^[a-z]+:\/\/[^\/]+/, ""); // Remove domain name and rebuild it
|
||||||
|
path = location.protocol + "//" + location.host
|
||||||
|
// paths starting with a slash are relative to the root (host)
|
||||||
|
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
||||||
|
+ "/" + path.replace(/^[\/]+/, "");
|
||||||
|
return path;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$guessBasePath = function() {
|
||||||
|
if (require.aceBaseUrl)
|
||||||
|
return require.aceBaseUrl;
|
||||||
|
|
||||||
|
var scripts = document.getElementsByTagName("script");
|
||||||
|
for (var i=0; i<scripts.length; i++) {
|
||||||
|
var script = scripts[i];
|
||||||
|
|
||||||
|
var base = script.getAttribute("data-ace-base");
|
||||||
|
if (base)
|
||||||
|
return base.replace(/\/*$/, "/");
|
||||||
|
|
||||||
|
var src = script.src || script.getAttribute("src");
|
||||||
|
if (!src) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
||||||
|
if (m)
|
||||||
|
return m[1] || m[2];
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
};
|
||||||
|
|
||||||
|
this.terminate = function() {
|
||||||
|
this._emit("terminate", {});
|
||||||
|
this.$worker.terminate();
|
||||||
|
this.$worker = null;
|
||||||
|
this.$doc.removeEventListener("change", this.changeListener);
|
||||||
|
this.$doc = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.send = function(cmd, args) {
|
||||||
|
this.$worker.postMessage({command: cmd, args: args});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.call = function(cmd, args, callback) {
|
||||||
|
if (callback) {
|
||||||
|
var id = this.callbackId++;
|
||||||
|
this.callbacks[id] = callback;
|
||||||
|
args.push(id);
|
||||||
|
}
|
||||||
|
this.send(cmd, args);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.emit = function(event, data) {
|
||||||
|
try {
|
||||||
|
// firefox refuses to clone objects which have function properties
|
||||||
|
// TODO: cleanup event
|
||||||
|
this.$worker.postMessage({event: event, data: {data: data.data}});
|
||||||
|
}
|
||||||
|
catch(ex) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.attachToDocument = function(doc) {
|
||||||
|
if(this.$doc)
|
||||||
|
this.terminate();
|
||||||
|
|
||||||
|
this.$doc = doc;
|
||||||
|
this.call("setValue", [doc.getValue()]);
|
||||||
|
doc.on("change", this.changeListener);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.changeListener = function(e) {
|
||||||
|
e.range = {
|
||||||
|
start: e.data.range.start,
|
||||||
|
end: e.data.range.end
|
||||||
|
};
|
||||||
|
this.emit("change", e);
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(WorkerClient.prototype);
|
||||||
|
|
||||||
|
exports.WorkerClient = WorkerClient;
|
||||||
|
|
||||||
|
});
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is Ajax.org Code Editor (ACE).
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* Ajax.org B.V.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Fabian Jakobs <fabian AT ajax DOT org>
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
define('ace/theme/textmate', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) {
|
define('ace/theme/textmate', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -603,192 +603,3 @@ var FoldMode = exports.FoldMode = function() {};
|
||||||
}).call(FoldMode.prototype);
|
}).call(FoldMode.prototype);
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
|
||||||
|
|
@ -603,192 +603,3 @@ var FoldMode = exports.FoldMode = function() {};
|
||||||
}).call(FoldMode.prototype);
|
}).call(FoldMode.prototype);
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1736,195 +1736,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
|
|
||||||
|
|
@ -1736,195 +1736,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -454,195 +454,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
|
|
||||||
|
|
@ -454,195 +454,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -688,195 +688,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -688,195 +688,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -747,195 +747,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -747,195 +747,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -689,195 +689,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -689,195 +689,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -664,195 +664,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -664,195 +664,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -35,7 +35,7 @@
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
ace.define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
|
ace.define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/worker/worker_client'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
|
|
@ -45,6 +45,7 @@ var HighlightRules = require("./json_highlight_rules").JsonHighlightRules;
|
||||||
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
||||||
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
var WorkerClient = require("../worker/worker_client").WorkerClient;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
||||||
|
|
@ -76,7 +77,23 @@ oop.inherits(Mode, TextMode);
|
||||||
this.autoOutdent = function(state, doc, row) {
|
this.autoOutdent = function(state, doc, row) {
|
||||||
this.$outdent.autoOutdent(doc, row);
|
this.$outdent.autoOutdent(doc, row);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.createWorker = function(session) {
|
||||||
|
var worker = new WorkerClient(["ace"], "worker-json.js", "ace/mode/json_worker", "JsonWorker");
|
||||||
|
worker.attachToDocument(session.getDocument());
|
||||||
|
|
||||||
|
worker.on("error", function(e) {
|
||||||
|
session.setAnnotations([e.data]);
|
||||||
|
});
|
||||||
|
|
||||||
|
worker.on("ok", function() {
|
||||||
|
session.clearAnnotations();
|
||||||
|
});
|
||||||
|
|
||||||
|
return worker;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}).call(Mode.prototype);
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
exports.Mode = Mode;
|
exports.Mode = Mode;
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
|
define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/worker/worker_client'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
|
|
@ -45,6 +45,7 @@ var HighlightRules = require("./json_highlight_rules").JsonHighlightRules;
|
||||||
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
||||||
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
var WorkerClient = require("../worker/worker_client").WorkerClient;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
||||||
|
|
@ -76,7 +77,23 @@ oop.inherits(Mode, TextMode);
|
||||||
this.autoOutdent = function(state, doc, row) {
|
this.autoOutdent = function(state, doc, row) {
|
||||||
this.$outdent.autoOutdent(doc, row);
|
this.$outdent.autoOutdent(doc, row);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.createWorker = function(session) {
|
||||||
|
var worker = new WorkerClient(["ace"], "worker-json.js", "ace/mode/json_worker", "JsonWorker");
|
||||||
|
worker.attachToDocument(session.getDocument());
|
||||||
|
|
||||||
|
worker.on("error", function(e) {
|
||||||
|
session.setAnnotations([e.data]);
|
||||||
|
});
|
||||||
|
|
||||||
|
worker.on("ok", function() {
|
||||||
|
session.clearAnnotations();
|
||||||
|
});
|
||||||
|
|
||||||
|
return worker;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}).call(Mode.prototype);
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
exports.Mode = Mode;
|
exports.Mode = Mode;
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -744,195 +744,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -744,195 +744,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -689,195 +689,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -689,195 +689,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1743,195 +1743,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
|
|
||||||
|
|
@ -1743,195 +1743,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -198,7 +198,7 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -263,7 +263,8 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
@ -1538,10 +1539,10 @@ exports.implement = function(proto, mixin) {
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
define('ace/mode/coffee_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/coffee/coffee-script'], function(require, exports, module) {
|
define('ace/mode/coffee_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/coffee/coffee-script'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
var Mirror = require("../worker/mirror").Mirror;
|
var Mirror = require("../worker/mirror").Mirror;
|
||||||
var coffee = require("../mode/coffee/coffee-script");
|
var coffee = require("../mode/coffee/coffee-script");
|
||||||
|
|
@ -1557,29 +1558,29 @@ var Worker = exports.Worker = function(sender) {
|
||||||
oop.inherits(Worker, Mirror);
|
oop.inherits(Worker, Mirror);
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
this.onUpdate = function() {
|
this.onUpdate = function() {
|
||||||
var value = this.doc.getValue();
|
var value = this.doc.getValue();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
coffee.parse(value);
|
coffee.parse(value);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
var m = e.message.match(/Parse error on line (\d+): (.*)/);
|
var m = e.message.match(/Parse error on line (\d+): (.*)/);
|
||||||
if (m) {
|
if (m) {
|
||||||
this.sender.emit("error", {
|
this.sender.emit("error", {
|
||||||
row: parseInt(m[1]) - 1,
|
row: parseInt(m[1], 10) - 1,
|
||||||
column: null,
|
column: null,
|
||||||
text: m[2],
|
text: m[2],
|
||||||
type: "error"
|
type: "error"
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof SyntaxError) {
|
if (e instanceof SyntaxError) {
|
||||||
var m = e.message.match(/ on line (\d+)/);
|
var m = e.message.match(/ on line (\d+)/);
|
||||||
if (m) {
|
if (m) {
|
||||||
this.sender.emit("error", {
|
this.sender.emit("error", {
|
||||||
row: parseInt(m[1]) - 1,
|
row: parseInt(m[1], 10) - 1,
|
||||||
column: null,
|
column: null,
|
||||||
text: e.message.replace(m[0], ""),
|
text: e.message.replace(m[0], ""),
|
||||||
type: "error"
|
type: "error"
|
||||||
|
|
@ -1590,7 +1591,7 @@ oop.inherits(Worker, Mirror);
|
||||||
}
|
}
|
||||||
this.sender.emit("ok");
|
this.sender.emit("ok");
|
||||||
};
|
};
|
||||||
|
|
||||||
}).call(Worker.prototype);
|
}).call(Worker.prototype);
|
||||||
|
|
||||||
});define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
|
});define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,7 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -263,7 +263,8 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,7 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -263,7 +263,8 @@ define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, ex
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
|
||||||
3062
build/src/worker-json.js
Normal file
3062
build/src/worker-json.js
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1451,7 +1451,7 @@ exports.hasCssString = function(id, doc) {
|
||||||
|
|
||||||
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].title === id) return true;
|
if (sheets[index++].owningElement.id === id) return true;
|
||||||
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].id === id) return true;
|
if (sheets[index++].id === id) return true;
|
||||||
|
|
@ -1472,7 +1472,7 @@ exports.importCssString = function importCssString(cssText, id, doc) {
|
||||||
style = doc.createStyleSheet();
|
style = doc.createStyleSheet();
|
||||||
style.cssText = cssText;
|
style.cssText = cssText;
|
||||||
if (id)
|
if (id)
|
||||||
style.title = id;
|
style.owningElement.id = id;
|
||||||
} else {
|
} else {
|
||||||
style = doc.createElementNS
|
style = doc.createElementNS
|
||||||
? doc.createElementNS(XHTML_NS, "style")
|
? doc.createElementNS(XHTML_NS, "style")
|
||||||
|
|
@ -1618,8 +1618,7 @@ exports.getParentWindow = function(document) {
|
||||||
return document.defaultView || document.parentWindow;
|
return document.defaultView || document.parentWindow;
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});/**
|
||||||
/**
|
|
||||||
* based on code from:
|
* based on code from:
|
||||||
*
|
*
|
||||||
* @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
|
* @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
|
||||||
|
|
@ -1717,7 +1716,7 @@ exports.loadScript = function(path, callback) {
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/ace', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/dom', 'ace/lib/event', 'ace/editor', 'ace/edit_session', 'ace/undomanager', 'ace/virtual_renderer', 'ace/theme/textmate'], function(require, exports, module) {
|
__ace_shadowed__.define('ace/ace', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/dom', 'ace/lib/event', 'ace/editor', 'ace/edit_session', 'ace/undomanager', 'ace/virtual_renderer', 'ace/worker/worker_client', 'ace/theme/textmate'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
require("./lib/fixoldbrowsers");
|
require("./lib/fixoldbrowsers");
|
||||||
|
|
@ -1730,6 +1729,8 @@ var EditSession = require("./edit_session").EditSession;
|
||||||
var UndoManager = require("./undomanager").UndoManager;
|
var UndoManager = require("./undomanager").UndoManager;
|
||||||
var Renderer = require("./virtual_renderer").VirtualRenderer;
|
var Renderer = require("./virtual_renderer").VirtualRenderer;
|
||||||
|
|
||||||
|
require("./worker/worker_client");
|
||||||
|
|
||||||
exports.edit = function(el) {
|
exports.edit = function(el) {
|
||||||
if (typeof(el) == "string") {
|
if (typeof(el) == "string") {
|
||||||
el = document.getElementById(el);
|
el = document.getElementById(el);
|
||||||
|
|
@ -1818,7 +1819,7 @@ __ace_shadowed__.define('ace/lib/regexp', ['require', 'exports', 'module' ], fun
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -1883,7 +1884,8 @@ __ace_shadowed__.define('ace/lib/regexp', ['require', 'exports', 'module' ], fun
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});// vim: ts=4 sts=4 sw=4 expandtab
|
});
|
||||||
|
// vim: ts=4 sts=4 sw=4 expandtab
|
||||||
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
|
||||||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||||||
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
|
||||||
|
|
@ -14605,6 +14607,195 @@ __ace_shadowed__.define("text!ace/css/editor.css", [], "@import url(//fonts.goog
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
||||||
|
|
||||||
|
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
||||||
|
|
||||||
|
this.changeListener = this.changeListener.bind(this);
|
||||||
|
|
||||||
|
if (module.packaged) {
|
||||||
|
var base = this.$guessBasePath();
|
||||||
|
this.$worker = new Worker(base + packagedJs);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
||||||
|
this.$worker = new Worker(workerUrl);
|
||||||
|
|
||||||
|
var tlns = {};
|
||||||
|
for (var i=0; i<topLevelNamespaces.length; i++) {
|
||||||
|
var ns = topLevelNamespaces[i];
|
||||||
|
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
||||||
|
|
||||||
|
tlns[ns] = path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$worker.postMessage({
|
||||||
|
init : true,
|
||||||
|
tlns: tlns,
|
||||||
|
module: mod,
|
||||||
|
classname: classname
|
||||||
|
});
|
||||||
|
|
||||||
|
this.callbackId = 1;
|
||||||
|
this.callbacks = {};
|
||||||
|
|
||||||
|
var _self = this;
|
||||||
|
this.$worker.onerror = function(e) {
|
||||||
|
window.console && console.log && console.log(e);
|
||||||
|
throw e;
|
||||||
|
};
|
||||||
|
this.$worker.onmessage = function(e) {
|
||||||
|
var msg = e.data;
|
||||||
|
switch(msg.type) {
|
||||||
|
case "log":
|
||||||
|
window.console && console.log && console.log(msg.data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "event":
|
||||||
|
_self._emit(msg.name, {data: msg.data});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "call":
|
||||||
|
var callback = _self.callbacks[msg.id];
|
||||||
|
if (callback) {
|
||||||
|
callback(msg.data);
|
||||||
|
delete _self.callbacks[msg.id];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
(function(){
|
||||||
|
|
||||||
|
oop.implement(this, EventEmitter);
|
||||||
|
|
||||||
|
this.$normalizePath = function(path) {
|
||||||
|
path = path.replace(/^[a-z]+:\/\/[^\/]+/, ""); // Remove domain name and rebuild it
|
||||||
|
path = location.protocol + "//" + location.host
|
||||||
|
// paths starting with a slash are relative to the root (host)
|
||||||
|
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
||||||
|
+ "/" + path.replace(/^[\/]+/, "");
|
||||||
|
return path;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$guessBasePath = function() {
|
||||||
|
if (require.aceBaseUrl)
|
||||||
|
return require.aceBaseUrl;
|
||||||
|
|
||||||
|
var scripts = document.getElementsByTagName("script");
|
||||||
|
for (var i=0; i<scripts.length; i++) {
|
||||||
|
var script = scripts[i];
|
||||||
|
|
||||||
|
var base = script.getAttribute("data-ace-base");
|
||||||
|
if (base)
|
||||||
|
return base.replace(/\/*$/, "/");
|
||||||
|
|
||||||
|
var src = script.src || script.getAttribute("src");
|
||||||
|
if (!src) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
||||||
|
if (m)
|
||||||
|
return m[1] || m[2];
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
};
|
||||||
|
|
||||||
|
this.terminate = function() {
|
||||||
|
this._emit("terminate", {});
|
||||||
|
this.$worker.terminate();
|
||||||
|
this.$worker = null;
|
||||||
|
this.$doc.removeEventListener("change", this.changeListener);
|
||||||
|
this.$doc = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.send = function(cmd, args) {
|
||||||
|
this.$worker.postMessage({command: cmd, args: args});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.call = function(cmd, args, callback) {
|
||||||
|
if (callback) {
|
||||||
|
var id = this.callbackId++;
|
||||||
|
this.callbacks[id] = callback;
|
||||||
|
args.push(id);
|
||||||
|
}
|
||||||
|
this.send(cmd, args);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.emit = function(event, data) {
|
||||||
|
try {
|
||||||
|
// firefox refuses to clone objects which have function properties
|
||||||
|
// TODO: cleanup event
|
||||||
|
this.$worker.postMessage({event: event, data: {data: data.data}});
|
||||||
|
}
|
||||||
|
catch(ex) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.attachToDocument = function(doc) {
|
||||||
|
if(this.$doc)
|
||||||
|
this.terminate();
|
||||||
|
|
||||||
|
this.$doc = doc;
|
||||||
|
this.call("setValue", [doc.getValue()]);
|
||||||
|
doc.on("change", this.changeListener);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.changeListener = function(e) {
|
||||||
|
e.range = {
|
||||||
|
start: e.data.range.start,
|
||||||
|
end: e.data.range.end
|
||||||
|
};
|
||||||
|
this.emit("change", e);
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(WorkerClient.prototype);
|
||||||
|
|
||||||
|
exports.WorkerClient = WorkerClient;
|
||||||
|
|
||||||
|
});
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is Ajax.org Code Editor (ACE).
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* Ajax.org B.V.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Fabian Jakobs <fabian AT ajax DOT org>
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/theme/textmate', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) {
|
__ace_shadowed__.define('ace/theme/textmate', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -603,192 +603,3 @@ var FoldMode = exports.FoldMode = function() {};
|
||||||
}).call(FoldMode.prototype);
|
}).call(FoldMode.prototype);
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
|
||||||
|
|
@ -1736,195 +1736,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
|
|
||||||
|
|
@ -454,195 +454,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
|
|
||||||
|
|
@ -688,195 +688,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -747,195 +747,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -689,195 +689,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -664,195 +664,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
|
__ace_shadowed__.define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/worker/worker_client'], function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
|
|
@ -45,6 +45,7 @@ var HighlightRules = require("./json_highlight_rules").JsonHighlightRules;
|
||||||
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
||||||
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
var WorkerClient = require("../worker/worker_client").WorkerClient;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
||||||
|
|
@ -76,7 +77,23 @@ oop.inherits(Mode, TextMode);
|
||||||
this.autoOutdent = function(state, doc, row) {
|
this.autoOutdent = function(state, doc, row) {
|
||||||
this.$outdent.autoOutdent(doc, row);
|
this.$outdent.autoOutdent(doc, row);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.createWorker = function(session) {
|
||||||
|
var worker = new WorkerClient(["ace"], "worker-json.js", "ace/mode/json_worker", "JsonWorker");
|
||||||
|
worker.attachToDocument(session.getDocument());
|
||||||
|
|
||||||
|
worker.on("error", function(e) {
|
||||||
|
session.setAnnotations([e.data]);
|
||||||
|
});
|
||||||
|
|
||||||
|
worker.on("ok", function() {
|
||||||
|
session.clearAnnotations();
|
||||||
|
});
|
||||||
|
|
||||||
|
return worker;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}).call(Mode.prototype);
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
exports.Mode = Mode;
|
exports.Mode = Mode;
|
||||||
|
|
|
||||||
|
|
@ -744,195 +744,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -689,195 +689,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* vim:ts=4:sts=4:sw=4:
|
/* vim:ts=4:sts=4:sw=4:
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
|
||||||
|
|
@ -1743,195 +1743,6 @@ var MatchingBraceOutdent = function() {};
|
||||||
}).call(MatchingBraceOutdent.prototype);
|
}).call(MatchingBraceOutdent.prototype);
|
||||||
|
|
||||||
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
||||||
});
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Ajax.org Code Editor (ACE).
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Ajax.org B.V.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Fabian Jakobs <fabian AT ajax DOT org>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
||||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
__ace_shadowed__.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
|
||||||
var EventEmitter = require("../lib/event_emitter").EventEmitter;
|
|
||||||
|
|
||||||
var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
|
||||||
|
|
||||||
this.changeListener = this.changeListener.bind(this);
|
|
||||||
|
|
||||||
if (module.packaged) {
|
|
||||||
var base = this.$guessBasePath();
|
|
||||||
this.$worker = new Worker(base + packagedJs);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var workerUrl = this.$normalizePath(require.nameToUrl("ace/worker/worker", null, "_"));
|
|
||||||
this.$worker = new Worker(workerUrl);
|
|
||||||
|
|
||||||
var tlns = {};
|
|
||||||
for (var i=0; i<topLevelNamespaces.length; i++) {
|
|
||||||
var ns = topLevelNamespaces[i];
|
|
||||||
var path = this.$normalizePath(require.nameToUrl(ns, null, "_").replace(/.js$/, ""));
|
|
||||||
|
|
||||||
tlns[ns] = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$worker.postMessage({
|
|
||||||
init : true,
|
|
||||||
tlns: tlns,
|
|
||||||
module: mod,
|
|
||||||
classname: classname
|
|
||||||
});
|
|
||||||
|
|
||||||
this.callbackId = 1;
|
|
||||||
this.callbacks = {};
|
|
||||||
|
|
||||||
var _self = this;
|
|
||||||
this.$worker.onerror = function(e) {
|
|
||||||
window.console && console.log && console.log(e);
|
|
||||||
throw e;
|
|
||||||
};
|
|
||||||
this.$worker.onmessage = function(e) {
|
|
||||||
var msg = e.data;
|
|
||||||
switch(msg.type) {
|
|
||||||
case "log":
|
|
||||||
window.console && console.log && console.log(msg.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "event":
|
|
||||||
_self._emit(msg.name, {data: msg.data});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "call":
|
|
||||||
var callback = _self.callbacks[msg.id];
|
|
||||||
if (callback) {
|
|
||||||
callback(msg.data);
|
|
||||||
delete _self.callbacks[msg.id];
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
(function(){
|
|
||||||
|
|
||||||
oop.implement(this, EventEmitter);
|
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
|
||||||
path = location.protocol + "//" + location.host
|
|
||||||
// paths starting with a slash are relative to the root (host)
|
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
|
||||||
+ "/" + path.replace(/^[\/]+/, "");
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$guessBasePath = function() {
|
|
||||||
if (require.aceBaseUrl)
|
|
||||||
return require.aceBaseUrl;
|
|
||||||
|
|
||||||
var scripts = document.getElementsByTagName("script");
|
|
||||||
for (var i=0; i<scripts.length; i++) {
|
|
||||||
var script = scripts[i];
|
|
||||||
|
|
||||||
var base = script.getAttribute("data-ace-base");
|
|
||||||
if (base)
|
|
||||||
return base.replace(/\/*$/, "/");
|
|
||||||
|
|
||||||
var src = script.src || script.getAttribute("src");
|
|
||||||
if (!src) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var m = src.match(/^(?:(.*\/)ace\.js|(.*\/)ace(-uncompressed)?(-noconflict)?\.js)(?:\?|$)/);
|
|
||||||
if (m)
|
|
||||||
return m[1] || m[2];
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
};
|
|
||||||
|
|
||||||
this.terminate = function() {
|
|
||||||
this._emit("terminate", {});
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
this.$doc.removeEventListener("change", this.changeListener);
|
|
||||||
this.$doc = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.send = function(cmd, args) {
|
|
||||||
this.$worker.postMessage({command: cmd, args: args});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.call = function(cmd, args, callback) {
|
|
||||||
if (callback) {
|
|
||||||
var id = this.callbackId++;
|
|
||||||
this.callbacks[id] = callback;
|
|
||||||
args.push(id);
|
|
||||||
}
|
|
||||||
this.send(cmd, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.emit = function(event, data) {
|
|
||||||
try {
|
|
||||||
// firefox refuses to clone objects which have function properties
|
|
||||||
// TODO: cleanup event
|
|
||||||
this.$worker.postMessage({event: event, data: {data: data.data}});
|
|
||||||
}
|
|
||||||
catch(ex) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.attachToDocument = function(doc) {
|
|
||||||
if(this.$doc)
|
|
||||||
this.terminate();
|
|
||||||
|
|
||||||
this.$doc = doc;
|
|
||||||
this.call("setValue", [doc.getValue()]);
|
|
||||||
doc.on("change", this.changeListener);
|
|
||||||
};
|
|
||||||
|
|
||||||
this.changeListener = function(e) {
|
|
||||||
e.range = {
|
|
||||||
start: e.data.range.start,
|
|
||||||
end: e.data.range.end
|
|
||||||
};
|
|
||||||
this.emit("change", e);
|
|
||||||
};
|
|
||||||
|
|
||||||
}).call(WorkerClient.prototype);
|
|
||||||
|
|
||||||
exports.WorkerClient = WorkerClient;
|
|
||||||
|
|
||||||
});
|
});
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ var modes = [
|
||||||
new Mode("scss", "SCSS", require("ace/mode/scss").Mode, ["scss"]),
|
new Mode("scss", "SCSS", require("ace/mode/scss").Mode, ["scss"]),
|
||||||
new Mode("ruby", "Ruby", require("ace/mode/ruby").Mode, ["rb"]),
|
new Mode("ruby", "Ruby", require("ace/mode/ruby").Mode, ["rb"]),
|
||||||
new Mode("sql", "SQL", require("ace/mode/sql").Mode, ["sql"]),
|
new Mode("sql", "SQL", require("ace/mode/sql").Mode, ["sql"]),
|
||||||
new Mode("svg", "SVG", require("ace/mode/SVG").Mode, ["svg"]),
|
new Mode("svg", "SVG", require("ace/mode/svg").Mode, ["svg"]),
|
||||||
new Mode("text", "Text", require("ace/mode/text").Mode, ["txt"]),
|
new Mode("text", "Text", require("ace/mode/text").Mode, ["txt"]),
|
||||||
new Mode("textile", "Textile", require("ace/mode/textile").Mode, ["textile"]),
|
new Mode("textile", "Textile", require("ace/mode/textile").Mode, ["textile"]),
|
||||||
new Mode("xml", "XML", require("ace/mode/xml").Mode, ["xml"])
|
new Mode("xml", "XML", require("ace/mode/xml").Mode, ["xml"])
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,41 @@
|
||||||
//http://groovy.codehaus.org/Concurrency+with+Groovy
|
//http://groovy.codehaus.org/Martin+Fowler%27s+closure+examples+in+Groovy
|
||||||
import java.util.concurrent.atomic.AtomicInteger
|
|
||||||
|
|
||||||
def counter = new AtomicInteger()
|
class Employee {
|
||||||
|
def name, salary
|
||||||
synchronized out(message) {
|
boolean manager
|
||||||
println(message)
|
String toString() { return name }
|
||||||
}
|
}
|
||||||
|
|
||||||
def th = Thread.start {
|
def emps = [new Employee(name:'Guillaume', manager:true, salary:200),
|
||||||
for( i in 1..8 ) {
|
new Employee(name:'Graeme', manager:true, salary:200),
|
||||||
sleep 30
|
new Employee(name:'Dierk', manager:false, salary:151),
|
||||||
out "thread loop $i"
|
new Employee(name:'Bernd', manager:false, salary:50)]
|
||||||
counter.incrementAndGet()
|
|
||||||
}
|
def managers(emps) {
|
||||||
|
emps.findAll { e -> e.isManager() }
|
||||||
}
|
}
|
||||||
|
|
||||||
for( j in 1..4 ) {
|
assert emps[0..1] == managers(emps) // [Guillaume, Graeme]
|
||||||
sleep 50
|
|
||||||
out "main loop $j"
|
def highPaid(emps) {
|
||||||
counter.incrementAndGet()
|
threshold = 150
|
||||||
|
emps.findAll { e -> e.salary > threshold }
|
||||||
}
|
}
|
||||||
|
|
||||||
th.join()
|
assert emps[0..2] == highPaid(emps) // [Guillaume, Graeme, Dierk]
|
||||||
|
|
||||||
assert counter.get() == 12
|
def paidMore(amount) {
|
||||||
|
{ e -> e.salary > amount}
|
||||||
|
}
|
||||||
|
def highPaid = paidMore(150)
|
||||||
|
|
||||||
|
assert highPaid(emps[0]) // true
|
||||||
|
assert emps[0..2] == emps.findAll(highPaid)
|
||||||
|
|
||||||
|
def filename = 'test.txt'
|
||||||
|
new File(filename).withReader{ reader -> doSomethingWith(reader) }
|
||||||
|
|
||||||
|
def readersText
|
||||||
|
def doSomethingWith(reader) { readersText = reader.text }
|
||||||
|
|
||||||
|
assert new File(filename).text == readersText
|
||||||
|
|
@ -1,12 +1,69 @@
|
||||||
//http://www.scala-lang.org/node/227
|
// http://www.scala-lang.org/node/54
|
||||||
/* Defines a new method 'sort' for array objects */
|
|
||||||
object implicits extends Application {
|
package examples.actors
|
||||||
implicit def arrayWrapper[A : ClassManifest](x: Array[A]) =
|
|
||||||
new {
|
import scala.actors.Actor
|
||||||
def sort(p: (A, A) => Boolean) = {
|
import scala.actors.Actor._
|
||||||
util.Sorting.stableSort(x, p); x
|
|
||||||
|
abstract class PingMessage
|
||||||
|
case object Start extends PingMessage
|
||||||
|
case object SendPing extends PingMessage
|
||||||
|
case object Pong extends PingMessage
|
||||||
|
|
||||||
|
abstract class PongMessage
|
||||||
|
case object Ping extends PongMessage
|
||||||
|
case object Stop extends PongMessage
|
||||||
|
|
||||||
|
object pingpong extends Application {
|
||||||
|
val pong = new Pong
|
||||||
|
val ping = new Ping(100000, pong)
|
||||||
|
ping.start
|
||||||
|
pong.start
|
||||||
|
ping ! Start
|
||||||
|
}
|
||||||
|
|
||||||
|
class Ping(count: Int, pong: Actor) extends Actor {
|
||||||
|
def act() {
|
||||||
|
println("Ping: Initializing with count "+count+": "+pong)
|
||||||
|
var pingsLeft = count
|
||||||
|
loop {
|
||||||
|
react {
|
||||||
|
case Start =>
|
||||||
|
println("Ping: starting.")
|
||||||
|
pong ! Ping
|
||||||
|
pingsLeft = pingsLeft - 1
|
||||||
|
case SendPing =>
|
||||||
|
pong ! Ping
|
||||||
|
pingsLeft = pingsLeft - 1
|
||||||
|
case Pong =>
|
||||||
|
if (pingsLeft % 1000 == 0)
|
||||||
|
println("Ping: pong from: "+sender)
|
||||||
|
if (pingsLeft > 0)
|
||||||
|
self ! SendPing
|
||||||
|
else {
|
||||||
|
println("Ping: Stop.")
|
||||||
|
pong ! Stop
|
||||||
|
exit('stop)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val x = Array(2, 3, 1, 4)
|
}
|
||||||
println("x = "+ x.sort((x: Int, y: Int) => x < y))
|
}
|
||||||
|
|
||||||
|
class Pong extends Actor {
|
||||||
|
def act() {
|
||||||
|
var pongCount = 0
|
||||||
|
loop {
|
||||||
|
react {
|
||||||
|
case Ping =>
|
||||||
|
if (pongCount % 1000 == 0)
|
||||||
|
println("Pong: ping "+pongCount+" from "+sender)
|
||||||
|
sender ! Pong
|
||||||
|
pongCount = pongCount + 1
|
||||||
|
case Stop =>
|
||||||
|
println("Pong: Stop.")
|
||||||
|
exit('stop)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -56,6 +56,8 @@ var EditSession = require("./edit_session").EditSession;
|
||||||
var UndoManager = require("./undomanager").UndoManager;
|
var UndoManager = require("./undomanager").UndoManager;
|
||||||
var Renderer = require("./virtual_renderer").VirtualRenderer;
|
var Renderer = require("./virtual_renderer").VirtualRenderer;
|
||||||
|
|
||||||
|
require("./worker/worker_client");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ace.edit(el) -> Editor
|
* Ace.edit(el) -> Editor
|
||||||
* - el (String | Element): Either the id of an element, or the element itself
|
* - el (String | Element): Either the id of an element, or the element itself
|
||||||
|
|
@ -89,4 +91,4 @@ exports.edit = function(el) {
|
||||||
return editor;
|
return editor;
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
@ -122,7 +122,7 @@ exports.hasCssString = function(id, doc) {
|
||||||
|
|
||||||
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
if (doc.createStyleSheet && (sheets = doc.styleSheets)) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].title === id) return true;
|
if (sheets[index++].owningElement.id === id) return true;
|
||||||
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
} else if ((sheets = doc.getElementsByTagName("style"))) {
|
||||||
while (index < sheets.length)
|
while (index < sheets.length)
|
||||||
if (sheets[index++].id === id) return true;
|
if (sheets[index++].id === id) return true;
|
||||||
|
|
@ -143,7 +143,7 @@ exports.importCssString = function importCssString(cssText, id, doc) {
|
||||||
style = doc.createStyleSheet();
|
style = doc.createStyleSheet();
|
||||||
style.cssText = cssText;
|
style.cssText = cssText;
|
||||||
if (id)
|
if (id)
|
||||||
style.title = id;
|
style.owningElement.id = id;
|
||||||
} else {
|
} else {
|
||||||
style = doc.createElementNS
|
style = doc.createElementNS
|
||||||
? doc.createElementNS(XHTML_NS, "style")
|
? doc.createElementNS(XHTML_NS, "style")
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ define(function(require, exports, module) {
|
||||||
RegExp.prototype.exec = function (str) {
|
RegExp.prototype.exec = function (str) {
|
||||||
var match = real.exec.apply(this, arguments),
|
var match = real.exec.apply(this, arguments),
|
||||||
name, r2;
|
name, r2;
|
||||||
if (match) {
|
if ( typeof(str) == 'string' && match) {
|
||||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||||
// nonparticipating capturing groups
|
// nonparticipating capturing groups
|
||||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||||
|
|
@ -107,4 +107,4 @@ define(function(require, exports, module) {
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -34,10 +34,10 @@
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
define(function(require, exports, module) {
|
define(function(require, exports, module) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var oop = require("../lib/oop");
|
var oop = require("../lib/oop");
|
||||||
var Mirror = require("../worker/mirror").Mirror;
|
var Mirror = require("../worker/mirror").Mirror;
|
||||||
var coffee = require("../mode/coffee/coffee-script");
|
var coffee = require("../mode/coffee/coffee-script");
|
||||||
|
|
@ -53,29 +53,29 @@ var Worker = exports.Worker = function(sender) {
|
||||||
oop.inherits(Worker, Mirror);
|
oop.inherits(Worker, Mirror);
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
this.onUpdate = function() {
|
this.onUpdate = function() {
|
||||||
var value = this.doc.getValue();
|
var value = this.doc.getValue();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
coffee.parse(value);
|
coffee.parse(value);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
var m = e.message.match(/Parse error on line (\d+): (.*)/);
|
var m = e.message.match(/Parse error on line (\d+): (.*)/);
|
||||||
if (m) {
|
if (m) {
|
||||||
this.sender.emit("error", {
|
this.sender.emit("error", {
|
||||||
row: parseInt(m[1]) - 1,
|
row: parseInt(m[1], 10) - 1,
|
||||||
column: null,
|
column: null,
|
||||||
text: m[2],
|
text: m[2],
|
||||||
type: "error"
|
type: "error"
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof SyntaxError) {
|
if (e instanceof SyntaxError) {
|
||||||
var m = e.message.match(/ on line (\d+)/);
|
var m = e.message.match(/ on line (\d+)/);
|
||||||
if (m) {
|
if (m) {
|
||||||
this.sender.emit("error", {
|
this.sender.emit("error", {
|
||||||
row: parseInt(m[1]) - 1,
|
row: parseInt(m[1], 10) - 1,
|
||||||
column: null,
|
column: null,
|
||||||
text: e.message.replace(m[0], ""),
|
text: e.message.replace(m[0], ""),
|
||||||
type: "error"
|
type: "error"
|
||||||
|
|
@ -86,7 +86,7 @@ oop.inherits(Worker, Mirror);
|
||||||
}
|
}
|
||||||
this.sender.emit("ok");
|
this.sender.emit("ok");
|
||||||
};
|
};
|
||||||
|
|
||||||
}).call(Worker.prototype);
|
}).call(Worker.prototype);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
@ -45,6 +45,7 @@ var HighlightRules = require("./json_highlight_rules").JsonHighlightRules;
|
||||||
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
||||||
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
||||||
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
||||||
|
var WorkerClient = require("../worker/worker_client").WorkerClient;
|
||||||
|
|
||||||
var Mode = function() {
|
var Mode = function() {
|
||||||
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
this.$tokenizer = new Tokenizer(new HighlightRules().getRules());
|
||||||
|
|
@ -76,7 +77,23 @@ oop.inherits(Mode, TextMode);
|
||||||
this.autoOutdent = function(state, doc, row) {
|
this.autoOutdent = function(state, doc, row) {
|
||||||
this.$outdent.autoOutdent(doc, row);
|
this.$outdent.autoOutdent(doc, row);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.createWorker = function(session) {
|
||||||
|
var worker = new WorkerClient(["ace"], "worker-json.js", "ace/mode/json_worker", "JsonWorker");
|
||||||
|
worker.attachToDocument(session.getDocument());
|
||||||
|
|
||||||
|
worker.on("error", function(e) {
|
||||||
|
session.setAnnotations([e.data]);
|
||||||
|
});
|
||||||
|
|
||||||
|
worker.on("ok", function() {
|
||||||
|
session.clearAnnotations();
|
||||||
|
});
|
||||||
|
|
||||||
|
return worker;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}).call(Mode.prototype);
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
exports.Mode = Mode;
|
exports.Mode = Mode;
|
||||||
|
|
|
||||||
346
lib/ace/mode/json/json_parse.js
Normal file
346
lib/ace/mode/json/json_parse.js
Normal file
|
|
@ -0,0 +1,346 @@
|
||||||
|
/*
|
||||||
|
http://www.JSON.org/json_parse.js
|
||||||
|
2008-09-18
|
||||||
|
|
||||||
|
Public Domain.
|
||||||
|
|
||||||
|
NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
|
||||||
|
|
||||||
|
This file creates a json_parse function.
|
||||||
|
|
||||||
|
json_parse(text, reviver)
|
||||||
|
This method parses a JSON text to produce an object or array.
|
||||||
|
It can throw a SyntaxError exception.
|
||||||
|
|
||||||
|
The optional reviver parameter is a function that can filter and
|
||||||
|
transform the results. It receives each of the keys and values,
|
||||||
|
and its return value is used instead of the original value.
|
||||||
|
If it returns what it received, then the structure is not modified.
|
||||||
|
If it returns undefined then the member is deleted.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
// Parse the text. Values that look like ISO date strings will
|
||||||
|
// be converted to Date objects.
|
||||||
|
|
||||||
|
myData = json_parse(text, function (key, value) {
|
||||||
|
var a;
|
||||||
|
if (typeof value === 'string') {
|
||||||
|
a =
|
||||||
|
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
|
||||||
|
if (a) {
|
||||||
|
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
|
||||||
|
+a[5], +a[6]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
});
|
||||||
|
|
||||||
|
This is a reference implementation. You are free to copy, modify, or
|
||||||
|
redistribute.
|
||||||
|
|
||||||
|
This code should be minified before deployment.
|
||||||
|
See http://javascript.crockford.com/jsmin.html
|
||||||
|
|
||||||
|
USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
|
||||||
|
NOT CONTROL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*members "", "\"", "\/", "\\", at, b, call, charAt, f, fromCharCode,
|
||||||
|
hasOwnProperty, message, n, name, push, r, t, text
|
||||||
|
*/
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// This is a function that can parse a JSON text, producing a JavaScript
|
||||||
|
// data structure. It is a simple, recursive descent parser. It does not use
|
||||||
|
// eval or regular expressions, so it can be used as a model for implementing
|
||||||
|
// a JSON parser in other languages.
|
||||||
|
|
||||||
|
// We are defining the function inside of another function to avoid creating
|
||||||
|
// global variables.
|
||||||
|
|
||||||
|
var at, // The index of the current character
|
||||||
|
ch, // The current character
|
||||||
|
escapee = {
|
||||||
|
'"': '"',
|
||||||
|
'\\': '\\',
|
||||||
|
'/': '/',
|
||||||
|
b: '\b',
|
||||||
|
f: '\f',
|
||||||
|
n: '\n',
|
||||||
|
r: '\r',
|
||||||
|
t: '\t'
|
||||||
|
},
|
||||||
|
text,
|
||||||
|
|
||||||
|
error = function (m) {
|
||||||
|
|
||||||
|
// Call error when something is wrong.
|
||||||
|
|
||||||
|
throw {
|
||||||
|
name: 'SyntaxError',
|
||||||
|
message: m,
|
||||||
|
at: at,
|
||||||
|
text: text
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
next = function (c) {
|
||||||
|
|
||||||
|
// If a c parameter is provided, verify that it matches the current character.
|
||||||
|
|
||||||
|
if (c && c !== ch) {
|
||||||
|
error("Expected '" + c + "' instead of '" + ch + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the next character. When there are no more characters,
|
||||||
|
// return the empty string.
|
||||||
|
|
||||||
|
ch = text.charAt(at);
|
||||||
|
at += 1;
|
||||||
|
return ch;
|
||||||
|
},
|
||||||
|
|
||||||
|
number = function () {
|
||||||
|
|
||||||
|
// Parse a number value.
|
||||||
|
|
||||||
|
var number,
|
||||||
|
string = '';
|
||||||
|
|
||||||
|
if (ch === '-') {
|
||||||
|
string = '-';
|
||||||
|
next('-');
|
||||||
|
}
|
||||||
|
while (ch >= '0' && ch <= '9') {
|
||||||
|
string += ch;
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
if (ch === '.') {
|
||||||
|
string += '.';
|
||||||
|
while (next() && ch >= '0' && ch <= '9') {
|
||||||
|
string += ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ch === 'e' || ch === 'E') {
|
||||||
|
string += ch;
|
||||||
|
next();
|
||||||
|
if (ch === '-' || ch === '+') {
|
||||||
|
string += ch;
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
while (ch >= '0' && ch <= '9') {
|
||||||
|
string += ch;
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
number = +string;
|
||||||
|
if (isNaN(number)) {
|
||||||
|
error("Bad number");
|
||||||
|
} else {
|
||||||
|
return number;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
string = function () {
|
||||||
|
|
||||||
|
// Parse a string value.
|
||||||
|
|
||||||
|
var hex,
|
||||||
|
i,
|
||||||
|
string = '',
|
||||||
|
uffff;
|
||||||
|
|
||||||
|
// When parsing for string values, we must look for " and \ characters.
|
||||||
|
|
||||||
|
if (ch === '"') {
|
||||||
|
while (next()) {
|
||||||
|
if (ch === '"') {
|
||||||
|
next();
|
||||||
|
return string;
|
||||||
|
} else if (ch === '\\') {
|
||||||
|
next();
|
||||||
|
if (ch === 'u') {
|
||||||
|
uffff = 0;
|
||||||
|
for (i = 0; i < 4; i += 1) {
|
||||||
|
hex = parseInt(next(), 16);
|
||||||
|
if (!isFinite(hex)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
uffff = uffff * 16 + hex;
|
||||||
|
}
|
||||||
|
string += String.fromCharCode(uffff);
|
||||||
|
} else if (typeof escapee[ch] === 'string') {
|
||||||
|
string += escapee[ch];
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
string += ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
error("Bad string");
|
||||||
|
},
|
||||||
|
|
||||||
|
white = function () {
|
||||||
|
|
||||||
|
// Skip whitespace.
|
||||||
|
|
||||||
|
while (ch && ch <= ' ') {
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
word = function () {
|
||||||
|
|
||||||
|
// true, false, or null.
|
||||||
|
|
||||||
|
switch (ch) {
|
||||||
|
case 't':
|
||||||
|
next('t');
|
||||||
|
next('r');
|
||||||
|
next('u');
|
||||||
|
next('e');
|
||||||
|
return true;
|
||||||
|
case 'f':
|
||||||
|
next('f');
|
||||||
|
next('a');
|
||||||
|
next('l');
|
||||||
|
next('s');
|
||||||
|
next('e');
|
||||||
|
return false;
|
||||||
|
case 'n':
|
||||||
|
next('n');
|
||||||
|
next('u');
|
||||||
|
next('l');
|
||||||
|
next('l');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
error("Unexpected '" + ch + "'");
|
||||||
|
},
|
||||||
|
|
||||||
|
value, // Place holder for the value function.
|
||||||
|
|
||||||
|
array = function () {
|
||||||
|
|
||||||
|
// Parse an array value.
|
||||||
|
|
||||||
|
var array = [];
|
||||||
|
|
||||||
|
if (ch === '[') {
|
||||||
|
next('[');
|
||||||
|
white();
|
||||||
|
if (ch === ']') {
|
||||||
|
next(']');
|
||||||
|
return array; // empty array
|
||||||
|
}
|
||||||
|
while (ch) {
|
||||||
|
array.push(value());
|
||||||
|
white();
|
||||||
|
if (ch === ']') {
|
||||||
|
next(']');
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
next(',');
|
||||||
|
white();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
error("Bad array");
|
||||||
|
},
|
||||||
|
|
||||||
|
object = function () {
|
||||||
|
|
||||||
|
// Parse an object value.
|
||||||
|
|
||||||
|
var key,
|
||||||
|
object = {};
|
||||||
|
|
||||||
|
if (ch === '{') {
|
||||||
|
next('{');
|
||||||
|
white();
|
||||||
|
if (ch === '}') {
|
||||||
|
next('}');
|
||||||
|
return object; // empty object
|
||||||
|
}
|
||||||
|
while (ch) {
|
||||||
|
key = string();
|
||||||
|
white();
|
||||||
|
next(':');
|
||||||
|
if (Object.hasOwnProperty.call(object, key)) {
|
||||||
|
error('Duplicate key "' + key + '"');
|
||||||
|
}
|
||||||
|
object[key] = value();
|
||||||
|
white();
|
||||||
|
if (ch === '}') {
|
||||||
|
next('}');
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
next(',');
|
||||||
|
white();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
error("Bad object");
|
||||||
|
};
|
||||||
|
|
||||||
|
value = function () {
|
||||||
|
|
||||||
|
// Parse a JSON value. It could be an object, an array, a string, a number,
|
||||||
|
// or a word.
|
||||||
|
|
||||||
|
white();
|
||||||
|
switch (ch) {
|
||||||
|
case '{':
|
||||||
|
return object();
|
||||||
|
case '[':
|
||||||
|
return array();
|
||||||
|
case '"':
|
||||||
|
return string();
|
||||||
|
case '-':
|
||||||
|
return number();
|
||||||
|
default:
|
||||||
|
return ch >= '0' && ch <= '9' ? number() : word();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return the json_parse function. It will have access to all of the above
|
||||||
|
// functions and variables.
|
||||||
|
|
||||||
|
return function (source, reviver) {
|
||||||
|
var result;
|
||||||
|
|
||||||
|
text = source;
|
||||||
|
at = 0;
|
||||||
|
ch = ' ';
|
||||||
|
result = value();
|
||||||
|
white();
|
||||||
|
if (ch) {
|
||||||
|
error("Syntax error");
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there is a reviver function, we recursively walk the new structure,
|
||||||
|
// passing each name/value pair to the reviver function for possible
|
||||||
|
// transformation, starting with a temporary root object that holds the result
|
||||||
|
// in an empty key. If there is not a reviver function, we simply return the
|
||||||
|
// result.
|
||||||
|
|
||||||
|
return typeof reviver === 'function' ? function walk(holder, key) {
|
||||||
|
var k, v, value = holder[key];
|
||||||
|
if (value && typeof value === 'object') {
|
||||||
|
for (k in value) {
|
||||||
|
if (Object.hasOwnProperty.call(value, k)) {
|
||||||
|
v = walk(value, k);
|
||||||
|
if (v !== undefined) {
|
||||||
|
value[k] = v;
|
||||||
|
} else {
|
||||||
|
delete value[k];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return reviver.call(holder, key, value);
|
||||||
|
}({'': result}, '') : result;
|
||||||
|
};
|
||||||
|
});
|
||||||
103
lib/ace/mode/json_worker.js
Normal file
103
lib/ace/mode/json_worker.js
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is Ajax.org Code Editor (ACE).
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* Ajax.org B.V.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Fabian Jakobs <fabian AT ajax DOT org>
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var Mirror = require("../worker/mirror").Mirror;
|
||||||
|
var parse = require("./json/json_parse");
|
||||||
|
|
||||||
|
var JsonWorker = exports.JsonWorker = function(sender) {
|
||||||
|
Mirror.call(this, sender);
|
||||||
|
this.setTimeout(200);
|
||||||
|
};
|
||||||
|
|
||||||
|
oop.inherits(JsonWorker, Mirror);
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
this.onUpdate = function() {
|
||||||
|
var value = this.doc.getValue();
|
||||||
|
|
||||||
|
try {
|
||||||
|
var result = parse(value);
|
||||||
|
} catch (e) {
|
||||||
|
var pos = this.charToDocumentPosition(e.at-1);
|
||||||
|
this.sender.emit("error", {
|
||||||
|
row: pos.row,
|
||||||
|
column: pos.column,
|
||||||
|
text: e.message,
|
||||||
|
type: "error"
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.sender.emit("ok");
|
||||||
|
};
|
||||||
|
|
||||||
|
this.charToDocumentPosition = function(charPos) {
|
||||||
|
var i = 0;
|
||||||
|
var len = this.doc.getLength();
|
||||||
|
var nl = this.doc.getNewLineCharacter().length;
|
||||||
|
|
||||||
|
if (!len) {
|
||||||
|
return { row: 0, column: 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
var lineStart = 0;
|
||||||
|
while (i < len) {
|
||||||
|
var line = this.doc.getLine(i);
|
||||||
|
var lineLength = line.length + nl;
|
||||||
|
if (lineStart + lineLength > charPos)
|
||||||
|
return {
|
||||||
|
row: i,
|
||||||
|
column: charPos - lineStart
|
||||||
|
};
|
||||||
|
|
||||||
|
lineStart += lineLength;
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
row: i-1,
|
||||||
|
column: line.length
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(JsonWorker.prototype);
|
||||||
|
|
||||||
|
});
|
||||||
108
lib/ace/mode/json_worker_test.js
Normal file
108
lib/ace/mode/json_worker_test.js
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is Ajax.org Code Editor (ACE).
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* Ajax.org B.V.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Fabian Jakobs <fabian AT ajax DOT org>
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
if (typeof process !== "undefined") {
|
||||||
|
require("amd-loader");
|
||||||
|
}
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var assert = require("../test/assertions");
|
||||||
|
var Worker = require("./json_worker").JsonWorker;
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
setUp : function() {
|
||||||
|
this.sender = {
|
||||||
|
on: function() {},
|
||||||
|
callback: function(data, id) {
|
||||||
|
this.data = data;
|
||||||
|
},
|
||||||
|
events: [],
|
||||||
|
emit: function(type, e) {
|
||||||
|
this.events.push([type, e]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
"test check valid json": function() {
|
||||||
|
var worker = new Worker(this.sender);
|
||||||
|
worker.setValue("{}");
|
||||||
|
worker.deferredUpdate.call();
|
||||||
|
|
||||||
|
assert.equal(this.sender.events[0][0], "ok");
|
||||||
|
},
|
||||||
|
|
||||||
|
"test check for syntax error": function() {
|
||||||
|
var worker = new Worker(this.sender);
|
||||||
|
worker.setValue([
|
||||||
|
"{",
|
||||||
|
"juhu: 12",
|
||||||
|
"}"
|
||||||
|
].join("\n"));
|
||||||
|
worker.deferredUpdate.call();
|
||||||
|
|
||||||
|
var event = this.sender.events[0];
|
||||||
|
assert.equal(event[0], "error");
|
||||||
|
assert.equal(event[1].type, "error");
|
||||||
|
assert.equal(event[1].text, "Bad string");
|
||||||
|
assert.equal(event[1].row, 1);
|
||||||
|
assert.equal(event[1].column, 0);
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
"test check for syntax error at first char": function() {
|
||||||
|
var worker = new Worker(this.sender);
|
||||||
|
worker.setValue("x");
|
||||||
|
worker.deferredUpdate.call();
|
||||||
|
|
||||||
|
var event = this.sender.events[0];
|
||||||
|
assert.equal(event[0], "error");
|
||||||
|
assert.equal(event[1].type, "error");
|
||||||
|
assert.equal(event[1].text, "Unexpected 'x'");
|
||||||
|
assert.equal(event[1].row, 0);
|
||||||
|
assert.equal(event[1].column, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
if (typeof module !== "undefined" && module === require.main) {
|
||||||
|
require("asyncjs").test.testcase(module.exports).exec();
|
||||||
|
}
|
||||||
|
|
@ -80,7 +80,7 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
|
||||||
|
|
||||||
this.$pos = pos;
|
this.$pos = pos;
|
||||||
// Used for reset
|
// Used for reset
|
||||||
this.$undoStackDepth = session.getUndoManager().$undoStack ? session.getUndoManager().$undoStack.length : -1;
|
this.$undoStackDepth = session.getUndoManager().$undostack ? session.getUndoManager().$undostack.length : -1;
|
||||||
this.setup();
|
this.setup();
|
||||||
|
|
||||||
session.selection.on("changeCursor", this.$onCursorChange);
|
session.selection.on("changeCursor", this.$onCursorChange);
|
||||||
|
|
@ -265,7 +265,7 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass)
|
||||||
if(this.$undoStackDepth === -1)
|
if(this.$undoStackDepth === -1)
|
||||||
throw Error("Canceling placeholders only supported with undo manager attached to session.");
|
throw Error("Canceling placeholders only supported with undo manager attached to session.");
|
||||||
var undoManager = this.session.getUndoManager();
|
var undoManager = this.session.getUndoManager();
|
||||||
var undosRequired = undoManager.$undoStack.length - this.$undoStackDepth;
|
var undosRequired = undoManager.$undostack.length - this.$undoStackDepth;
|
||||||
for (var i = 0; i < undosRequired; i++) {
|
for (var i = 0; i < undosRequired; i++) {
|
||||||
undoManager.undo(true);
|
undoManager.undo(true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,8 @@ module.exports = {
|
||||||
"test: cancel": function(next) {
|
"test: cancel": function(next) {
|
||||||
var session = new EditSession("var a = 10;\nconsole.log(a, a);", new JavaScriptMode());
|
var session = new EditSession("var a = 10;\nconsole.log(a, a);", new JavaScriptMode());
|
||||||
session.setUndoManager(new UndoManager());
|
session.setUndoManager(new UndoManager());
|
||||||
|
// hack around the difference between full ACE context and C9 world
|
||||||
|
session.getUndoManager().$undostack = session.getUndoManager().$undoStack;
|
||||||
var editor = new Editor(new MockRenderer(), session);
|
var editor = new Editor(new MockRenderer(), session);
|
||||||
var p = new PlaceHolder(session, 1, {row: 0, column: 4}, [{row: 1, column: 12}, {row: 1, column: 15}]);
|
var p = new PlaceHolder(session, 1, {row: 0, column: 4}, [{row: 1, column: 12}, {row: 1, column: 15}]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, mod, classname) {
|
||||||
oop.implement(this, EventEmitter);
|
oop.implement(this, EventEmitter);
|
||||||
|
|
||||||
this.$normalizePath = function(path) {
|
this.$normalizePath = function(path) {
|
||||||
path = path.replace(/^[a-z]+:\/\/[^\/]+\//, ""); // Remove domain name and rebuild it
|
path = path.replace(/^[a-z]+:\/\/[^\/]+/, ""); // Remove domain name and rebuild it
|
||||||
path = location.protocol + "//" + location.host
|
path = location.protocol + "//" + location.host
|
||||||
// paths starting with a slash are relative to the root (host)
|
// paths starting with a slash are relative to the root (host)
|
||||||
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
+ (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, ""))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue