-
Notifications
You must be signed in to change notification settings - Fork 8
/
collapsing-repeated-messages.js
37 lines (24 loc) · 1.06 KB
/
collapsing-repeated-messages.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* ------------------------------------------------------------------------ */
const fs = require ('fs')
const ansi = require ('ansicolor') // that comes with ololog
/* ------------------------------------------------------------------------ */
let prevLine
let prevLineCounter = 1
const log = require ('ololog').configure ({
/* Injects a function before a "render" step */
'+render' (text) {
/* Only single-line messages are collapsed in this example (for simplicity) */
if (text && prevLine && (prevLine === text) && (text.split ('\n').length === 1)) {
prevLineCounter++
return '\u001b[1A' + text + ' ' + ansi.darkGray.inverse.dim (` ×${prevLineCounter} `) + '\u001b[K'
}
prevLineCounter = 1
prevLine = text
return text
}
})
/* ------------------------------------------------------------------------ */
log ('a message')
for (let i = 0; i < 7; i++) log ('a repeated message')
log ('end')
/* ------------------------------------------------------------------------ */