cleanup mode_creator tool
This commit is contained in:
parent
6867d1f4c6
commit
14fc8adac2
1 changed files with 33 additions and 23 deletions
|
|
@ -2,6 +2,11 @@ define(function(require, exports, module) {
|
||||||
|
|
||||||
/** creates globals intentionally to make things easily accessible from console **/
|
/** creates globals intentionally to make things easily accessible from console **/
|
||||||
|
|
||||||
|
require("ace/ext/language_tools");
|
||||||
|
require("ace/config").setDefaultValues("editor", {
|
||||||
|
enableBasicAutocompletion: true,
|
||||||
|
enableSnippets: true
|
||||||
|
});
|
||||||
var net = require("ace/lib/net");
|
var net = require("ace/lib/net");
|
||||||
var Range = require("ace/range").Range;
|
var Range = require("ace/range").Range;
|
||||||
var util = require("demo/kitchen-sink/util");
|
var util = require("demo/kitchen-sink/util");
|
||||||
|
|
@ -79,28 +84,28 @@ document.getElementById("syncToMode").onclick = function() {
|
||||||
docEl.value = modelist.modesByName[modeEl.value].desc;
|
docEl.value = modelist.modesByName[modeEl.value].desc;
|
||||||
docEl.onchange();
|
docEl.onchange();
|
||||||
run();
|
run();
|
||||||
}
|
};
|
||||||
document.getElementById("perfTest").onclick = function() {
|
document.getElementById("perfTest").onclick = function() {
|
||||||
var lines = editor2.session.doc.getAllLines()
|
var lines = editor2.session.doc.getAllLines();
|
||||||
if (!lines.length)
|
if (!lines.length)
|
||||||
return
|
return;
|
||||||
while (lines.length < 1000) {
|
while (lines.length < 1000) {
|
||||||
lines = lines.concat(lines)
|
lines = lines.concat(lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
var tk = new Tokenizer(currentRules);
|
var tk = new Tokenizer(currentRules);
|
||||||
var testPerf = function(lines, tk){
|
var testPerf = function(lines, tk){
|
||||||
var state = "start"
|
var state = "start";
|
||||||
for (var i=0, l = lines.length; i <l; i++) {
|
for (var i=0, l = lines.length; i <l; i++) {
|
||||||
state = tk.getLineTokens(lines[i], state).state
|
state = tk.getLineTokens(lines[i], state).state;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var t = performance.now();
|
var t = performance.now();
|
||||||
testPerf(lines, tk);
|
testPerf(lines, tk);
|
||||||
t = t - performance.now(t);
|
t = t - performance.now(t);
|
||||||
log("tokenized " + lines.length + " lines in " + t + " ms");
|
log("tokenized " + lines.length + " lines in " + t + " ms");
|
||||||
}
|
};
|
||||||
|
|
||||||
util.fillDropdown("themeEl", {
|
util.fillDropdown("themeEl", {
|
||||||
bright: [
|
bright: [
|
||||||
|
|
@ -145,29 +150,34 @@ function run() {
|
||||||
var src = editor1.getValue();
|
var src = editor1.getValue();
|
||||||
var path = "ace/mode/new";
|
var path = "ace/mode/new";
|
||||||
var deps = getDeps(src, path);
|
var deps = getDeps(src, path);
|
||||||
window.require.undef(path)
|
window.require.undef(path);
|
||||||
src = src.replace("define(", 'define("' + path +'", ["require","exports","module",' + deps +'],');
|
src = src.replace("define(", 'define("' + path +'", ["require","exports","module",' + deps +'],');
|
||||||
try {
|
try {
|
||||||
eval(src);
|
eval(src);
|
||||||
require(["ace/mode/new"], function(e) {
|
require(["ace/mode/new"], function(e) {
|
||||||
try {
|
try {
|
||||||
continueRun(e)
|
continueRun(e);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
log(e)
|
log(e);
|
||||||
}
|
}
|
||||||
}, function(e) {
|
}, function(e) {
|
||||||
log(e);
|
log(e);
|
||||||
window.require.undef(path)
|
window.require.undef(path);
|
||||||
});
|
});
|
||||||
hideLog()
|
hideLog();
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
log(e);
|
log(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var currentRules
|
var currentRules;
|
||||||
var continueRun = function(rules) {
|
var continueRun = function(rules) {
|
||||||
rules = rules[Object.keys(rules)[0]];
|
for (var i in rules) {
|
||||||
currentRules = new rules().getRules()
|
if (typeof rules[i] == "function" && /rules/i.test(i)) {
|
||||||
|
rules = rules[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentRules = new rules().getRules();
|
||||||
var Tokenizer = DebugTokenizer;
|
var Tokenizer = DebugTokenizer;
|
||||||
|
|
||||||
var tk = new Tokenizer(currentRules);
|
var tk = new Tokenizer(currentRules);
|
||||||
|
|
@ -178,16 +188,16 @@ var continueRun = function(rules) {
|
||||||
|
|
||||||
editor1.commands.bindKey("ctrl-Return", run);
|
editor1.commands.bindKey("ctrl-Return", run);
|
||||||
|
|
||||||
var logEditor
|
var logEditor;
|
||||||
function log(e) {
|
function log(e) {
|
||||||
console.log(e)
|
console.log(e);
|
||||||
if (!logEditor) {
|
if (!logEditor) {
|
||||||
logEditor = util.createEditor(document.getElementById("consoleEditor"));
|
logEditor = util.createEditor(document.getElementById("consoleEditor"));
|
||||||
logEditor.session.setMode("ace/mode/javascript")
|
logEditor.session.setMode("ace/mode/javascript");
|
||||||
logEditor.session.setUseWorker(false)
|
logEditor.session.setUseWorker(false);
|
||||||
}
|
}
|
||||||
logEditor.container.parentNode.style.display = '';
|
logEditor.container.parentNode.style.display = '';
|
||||||
logEditor.resize()
|
logEditor.resize();
|
||||||
logEditor.navigateFileEnd(e);
|
logEditor.navigateFileEnd(e);
|
||||||
logEditor.insert(e + "\n");
|
logEditor.insert(e + "\n");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue