package
This commit is contained in:
parent
099f1541fd
commit
fcded20cbe
28 changed files with 6433 additions and 1935 deletions
|
|
@ -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
|
||||||
|
|
@ -11482,7 +11483,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 +14390,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 +14400,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 +14432,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;
|
||||||
|
|
|
||||||
|
|
@ -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 903d06c07f9549a84a0e66f51e3be082dfeda54a
|
||||||
|
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -14111,7 +14111,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(/\/[^\/]*$/, ""))
|
||||||
|
|
|
||||||
|
|
@ -14111,7 +14111,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(/\/[^\/]*$/, ""))
|
||||||
|
|
|
||||||
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
|
|
@ -1539,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");
|
||||||
|
|
@ -1558,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"
|
||||||
|
|
@ -1591,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) {
|
||||||
|
|
|
||||||
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
|
|
@ -1717,7 +1717,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 +1730,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 +1820,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 +1885,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 +14608,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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue