Dev: Collapse duplicate logs

This commit is contained in:
surunzi
2016-05-05 12:07:04 +08:00
parent 7abe363fc1
commit 6062467920
4 changed files with 43 additions and 25 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "eruda",
"version": "0.1.1",
"version": "0.1.2",
"description": "Console for mobile JavaScript",
"main": "index.js",
"scripts": {

View File

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

View File

@@ -1,6 +1,7 @@
<ul>
{{#each logs}}
<li class="eruda-{{type}}">
{{#if showTimes}}<span class="eruda-times">{{times}}</span>{{/if}}
{{#if isCode}}
<pre><code>{{{val}}}</code></pre>
{{else}}

View File

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