cleanup mode_creator tool

This commit is contained in:
nightwing 2014-10-05 21:57:50 +04:00
commit 14fc8adac2

View file

@ -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");
} }