diff --git a/package.json b/package.json index 3f2569f..6618dd6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eruda", - "version": "0.1.1", + "version": "0.1.2", "description": "Console for mobile JavaScript", "main": "index.js", "scripts": { diff --git a/src/Console/Log.es6 b/src/Console/Log.es6 index 52444e1..8de8f96 100644 --- a/src/Console/Log.es6 +++ b/src/Console/Log.es6 @@ -12,6 +12,7 @@ export default class Log extends util.Emitter this._logs = []; this._tpl = require('./Log.hbs'); this._filter = 'all'; + this._lastLog = {}; this._timer = {}; } clear() @@ -36,7 +37,7 @@ export default class Log extends util.Emitter return this.filter(new RegExp(util.escapeRegExp(regexp))); } - this._logs.push({ + this._insert({ type: 'input', ignoreFilter: true, val: transCode(jsCode) @@ -50,61 +51,51 @@ export default class Log extends util.Emitter this.error(e); } - this._render(); - return this; } output(msg) { msg = transMsg(msg); - this._logs.push({ + this._insert({ type: 'output', ignoreFilter: true, val: msg }); - this._render(); - return this; } dir(obj) { var msg = util.isObj(obj) ? JSON.stringify(obj, null, 4) : transMsg(obj); - this._logs.push({ + this._insert({ type: 'dir', isCode: true, val: msg }); - this._render(); - return this; } log() { var msg = transMultipleMsg(arguments); - this._logs.push({ + this._insert({ type: 'log', val: msg }); - this._render(); - return this; } html(msg) { - this._logs.push({ + this._insert({ type: 'html', ignoreFilter: true, val: msg }); - this._render(); - return this; } error(msg) @@ -120,40 +111,34 @@ export default class Log extends util.Emitter msg = errToStr(new Error(), transMsg(msg)); } - this._logs.push({ + this._insert({ type: 'error', ignoreFilter: ignoreFilter, val: msg }); - this._render(); - return this; } info() { var msg = transMultipleMsg(arguments); - this._logs.push({ + this._insert({ type: 'info', val: msg }); - this._render(); - return this; } warn() { var msg = transMultipleMsg(arguments); - this._logs.push({ + this._insert({ type: 'warn', val: msg }); - this._render(); - return this; } filter(type) @@ -186,6 +171,32 @@ export default class Log extends util.Emitter return this; } + _insert(log) + { + util.defaults(log, { + type: 'log', + isCode: false, + ignoreFilter: false, + val: '', + showTimes: false, + times: 1 + }); + + var lastLog = this._lastLog; + + if (lastLog.type === log.type && lastLog.val === log.val) + { + lastLog.times++; + lastLog.showTimes = true; + } else + { + this._logs.push(log); + + this._lastLog = log; + } + + this._render(); + } _runCmd(cmd) { cmd = util.trim(cmd); diff --git a/src/Console/Log.hbs b/src/Console/Log.hbs index 131c6d5..8768165 100644 --- a/src/Console/Log.hbs +++ b/src/Console/Log.hbs @@ -1,6 +1,7 @@
{{{val}}}
{{else}}
diff --git a/src/Console/Log.scss b/src/Console/Log.scss
index 2d87c31..2963ab3 100644
--- a/src/Console/Log.scss
+++ b/src/Console/Log.scss
@@ -13,6 +13,12 @@
a {
color: $blue !important;
}
+ .times {
+ background: $blue;
+ padding: 5px;
+ color: #fff;
+ border-radius: 4px;
+ }
&.log, &.output, &.info, &.dir {
border-bottom: 1px solid #b4b4b4;
}