diff --git a/Inquirer.js b/Inquirer.js index 29c109e..7f2ffd3 100644 --- a/Inquirer.js +++ b/Inquirer.js @@ -25,15 +25,10 @@ var icon = "data:image/gif;base64,R0lGODlhIAAgAKECADIyMjMzM////////yH5BAEKAAIALAAAAAAgACAAAAJulI8Zke2PFoC0LlZzW7qf633XGGHeiJqcaKWgsQov5JLvTNeYq+kM36vBUJNgaujDiVDIpLK58ylIiiU0NjWVZscHgAuUUXPOpfbhjD1bwmFIrHsvv+3Qrd4Byzda7N7h9zclmEOIFmgolgj4VgAAOw==", bugico = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAWlBMVEUkJSMuMC01NzQ+Pz1HSEZPUU5YWldfYV5pa2h6e3iOkI2YmpeipKGpq6ifwFWqxma4urezzHa50YHJy8jC1pLL3aLS4K3a3NnZ5rvo6+fn8NXv8+L19/D9//y9fxQqAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EBBAwFN28edE4AAABVaVRYdENvbW1lbnQAAAAAAENvcHlyaWdodCBJTkNPUlMgR21iSCAod3d3Lmljb25leHBlcmllbmNlLmNvbSkgLSBVbmxpY2Vuc2VkIHByZXZpZXcgaW1hZ2VYrophAAAC6UlEQVRYw+2X2barIAxA0U5qK2jFAor//5uXSUUS2q5z1n07vNhC2JCYSbL8cpA/wAeAGswQPwc0xI3qO4BWcPVs95/gvNYQIAhpgGBtATcw3RLSpgBtRYdU8oLeQNhZlQCUnazDny7YrfM2uK8Hh+fDTopUBavuOfwuH+4xlB5QdP5vEU69xdfaAMOONT8fQg012UY1CNGuV1HxraK3UGw6XEhm+BveYw0igNWh3OyJD6fD1WqF+EG7glUeYJdFEWsQe6I1WTG8BdjVMn6JB8DNvXTjY12R2X9HnDMCqNPqSxmCebl6UWatFHgwmdtdl4XzoGcyrHav3rp3IXLRqEq9SEqf5qQq3X8xao+UjstyEvlwNgZglNLePMX9FJ1e203cLDEn9CYfvKgdTLqgaWsDKa6NM4xkbol/SCheyiBek4+8zh04yz4sUP0WMNN9sHHywrNk0bR8C+jpYbDcXBZAEWGWTM5vAHMiSzGAzAH8i4aAdM46GgSI7lrAw5zJKdSrvLRJSmtc9tWprNUXm6z3akH29N0sE5CdELsYI7hse90BPvt1OABOjiFlXFeA338WNpCgxSGAL9qnzUo7gK+ANp+Cl0BfC0J9bmXTEEioHi4fc+S2GUAgNAZQ7zWJI7cN8QkAPrvfDGDYaxrHZMcMwFW4u7VBV3fBKaBs/wZgNrZJLEB1WUavTDBN3wFeWcD8HUDmwxkDPCkWYWg4KyjMQEKyhtVoYVGnFhoBA0hTdwQEmLJUwYTA0BzRuDKVAEzRNS2M/AwYF20KX6HTjBQcugc5jYELtD74j4C1b5kBAGaIQ0dHou7ihnhjCuBrAiqOABHqPwiIWSNePEQ6kEgDhYTUNCNRoEmaVF3jsvXEcSmU0zG97D10GQOcBu3eJjAMwOZjt9ylAIEF9ktiMWg9IbTmZLvT/dirhI08ZLTx2BaYNqxKHAl+2EgbWtyatJcafAyJbz555rHvOePTb77atP77cv3/gH8Wkk7NciByTQAAAABJRU5ErkJggg=="; - // Locals - - var formerOnError; - var inq = this; - var inqapp; + var inq = this, inqapp; // Tools - function objectResume(obj) { var r, k, v; if (obj === null) @@ -86,7 +81,6 @@ } // Methods - function getApp() { if (!inqapp) inqapp = merger.app("inquirer", { @@ -240,14 +234,12 @@ d.style.paddingBottom = "3px"; break; case 'o': - window.console.info(object); d.appendChild(objectResumeLink(object)); d.style.borderBottom = "1px solid #EEE"; head.appendChild(document.createTextNode("<")); head.style.color = "#DDD"; break; case 'e': - window.console.error(object); d.innerText = object; head.appendChild(document.createTextNode("!")); head.style.color = "#F88"; @@ -270,10 +262,20 @@ try { obj = eval('(' + code + ')'); } catch (err) { - this.log('e', err); + window.console.error(err); return; } - this.log('o', obj); + window.console.log(obj); + }, + write: function () { + var k; + for (k in arguments) + this.log('o', arguments[k]); + }, + writeError: function () { + var k; + for (k in arguments) + this.log('e', arguments[k]); }, setError: function (message, data) { this.content.Lerror.setText(message); @@ -307,9 +309,9 @@ getApp().windows.Wmain.close(); } - function hook() { - // On error code controller - formerOnError = window.onerror; + // On error hook + function hookOnError() { + var formerOnError = window.onerror; window.onerror = function (message, source, lineno, colno, err) { error.bind(inq)(message, { "source": source, @@ -317,24 +319,54 @@ "error": err, "raw": arguments }); - formerOnError; + if (formerOnError) + formerOnError.apply(window, arguments); } - // Konami code controller - var ckc = (function (callback) { - var kc = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65]; // Konami code - var kcindex = 0; - return function (e) { - if (e.keyCode == kc[kcindex]) - kcindex++; - else - kcindex = 0; - if (kcindex == kc.length) - callback(); - } - })(function () { - this.show(); - }.bind(this)); - document.addEventListener("keydown", ckc, false); + } + + // Konami code hook + function hookKonamiCode() { + var kc = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65], kcindex = 0 // Konami code + document.addEventListener("keydown", function (e) { + if (e.keyCode == kc[kcindex]) + kcindex++; + else + kcindex = 0; + if (kcindex == kc.length) + inquirer.show(); + }, false); + } + + // Console hook + function hookConsole() { + var wcon = getApp().windows.Wconsole; + if (!window.console) + window.console = {}; + function consoleOverride(method, funct) { + var old = window.console[method]; + window.console[method] = function () { + funct.apply(this, arguments); + if (old) + old.apply(this, arguments); + }; + window.console[method].old = old; + } + consoleOverride("log", function () { + wcon.write.apply(wcon, arguments); + }) + consoleOverride("debug", function () { + wcon.write.apply(wcon, arguments); + }) + consoleOverride("error", function () { + wcon.writeError.apply(wcon, arguments); + }) + } + + // Install hooks + function hook() { + hookOnError(); + hookKonamiCode(); + hookConsole(); } function error(message, data) { @@ -350,14 +382,15 @@ } function console() { - + getApp().showConsole(); + show(); } function log() { - + getApp().windows.Wconsole.write.apply(getApp().windows.Wconsole, arguments); } - // Publish + // Publish this.merge({ autoShow: true, // Open Inquirer environment when a new unhandled error happen show: show, // Enters environment diff --git a/WebInquirer.html b/WebInquirer.html index 36d6d31..d617a0d 100644 --- a/WebInquirer.html +++ b/WebInquirer.html @@ -46,6 +46,7 @@


+