Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80657 views
1
/*
2
A console.log that won't leave you hanging when node exits
3
90% of this file was ripped from node.js
4
5
License: see: https://github.com/joyent/node/blob/master/lib/console.js
6
*/
7
8
var util = require('util');
9
var fs = require("fs");
10
11
/* Monkey patching */
12
if (!util.format) {
13
var formatRegExp = /%[sdj%]/g;
14
util.format = function(f) {
15
if (typeof f !== 'string') {
16
var objects = [];
17
for (var i = 0; i < arguments.length; i++) {
18
objects.push(util.inspect(arguments[i]));
19
}
20
return objects.join(' ');
21
}
22
23
var i = 1;
24
var args = arguments;
25
var len = args.length;
26
var str = String(f).replace(formatRegExp, function(x) {
27
if (i >= len) return x;
28
switch (x) {
29
case '%s': return String(args[i++]);
30
case '%d': return Number(args[i++]);
31
case '%j': return JSON.stringify(args[i++]);
32
case '%%': return '%';
33
default:
34
return x;
35
}
36
});
37
for (var x = args[i]; i < len; x = args[++i]) {
38
if (x === null || typeof x !== 'object') {
39
str += ' ' + x;
40
} else {
41
str += ' ' + util.inspect(x);
42
}
43
}
44
return str;
45
}
46
}
47
48
var consoleFlush = function(data) {
49
if (!Buffer.isBuffer(data)) {
50
data= new Buffer(''+ data);
51
}
52
if (data.length) {
53
var written= 0;
54
do {
55
try {
56
var len = data.length- written;
57
written += fs.writeSync(process.stdout.fd, data, written, len, -1);
58
}
59
catch (e) {
60
}
61
} while(written < data.length);
62
}
63
};
64
65
var originalConsoleLog = console.log;
66
var patchedConsoleLog = function() {
67
var str = util.format.apply(null, arguments) + "\n";
68
consoleFlush(str);
69
};
70
71
exports.patch = function() {
72
console.log = patchedConsoleLog;
73
}
74
75
exports.unpatch = function() {
76
console.log = originalConsoleLog;
77
}
78