lint util.js and src/node.js
This commit is contained in:
parent
7c57eb2aec
commit
558e5ba2b0
5
Makefile
5
Makefile
@ -130,11 +130,8 @@ bench-idle:
|
|||||||
sleep 1
|
sleep 1
|
||||||
./node benchmark/idle_clients.js &
|
./node benchmark/idle_clients.js &
|
||||||
|
|
||||||
GJSLINT = PYTHONPATH=tools/closure_linter/ \
|
|
||||||
python tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc
|
|
||||||
|
|
||||||
jslint:
|
jslint:
|
||||||
$(GJSLINT) -r lib/ -r src/ -r test/
|
PYTHONPATH=tools/closure_linter/ python tools/closure_linter/closure_linter/gjslint.py --unix_mode --strict --nojsdoc -r lib/ -r src/ -r test/
|
||||||
|
|
||||||
cpplint:
|
cpplint:
|
||||||
@python tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
|
@python tools/cpplint.py $(wildcard src/*.cc src/*.h src/*.c)
|
||||||
|
165
lib/util.js
165
lib/util.js
@ -31,7 +31,7 @@ var error = exports.error = function(x) {
|
|||||||
* Echos the value of a value. Trys to print the value out
|
* Echos the value of a value. Trys to print the value out
|
||||||
* in the best way possible given the different types.
|
* in the best way possible given the different types.
|
||||||
*
|
*
|
||||||
* @param {Object} value The object to print out.
|
* @param {Object} obj The object to print out.
|
||||||
* @param {Boolean} showHidden Flag that shows hidden (not enumerable)
|
* @param {Boolean} showHidden Flag that shows hidden (not enumerable)
|
||||||
* properties of objects.
|
* properties of objects.
|
||||||
* @param {Number} depth Depth in which to descend in object. Default is 2.
|
* @param {Number} depth Depth in which to descend in object. Default is 2.
|
||||||
@ -43,30 +43,32 @@ exports.inspect = function(obj, showHidden, depth, colors) {
|
|||||||
|
|
||||||
var stylize = function(str, styleType) {
|
var stylize = function(str, styleType) {
|
||||||
// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
|
// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
|
||||||
var styles = { 'bold' : [1, 22]
|
var styles =
|
||||||
, 'italic' : [3, 23]
|
{ 'bold' : [1, 22],
|
||||||
, 'underline' : [4, 24]
|
'italic' : [3, 23],
|
||||||
, 'inverse' : [7, 27]
|
'underline' : [4, 24],
|
||||||
, 'white' : [37, 39]
|
'inverse' : [7, 27],
|
||||||
, 'grey' : [90, 39]
|
'white' : [37, 39],
|
||||||
, 'black' : [30, 39]
|
'grey' : [90, 39],
|
||||||
, 'blue' : [34, 39]
|
'black' : [30, 39],
|
||||||
, 'cyan' : [36, 39]
|
'blue' : [34, 39],
|
||||||
, 'green' : [32, 39]
|
'cyan' : [36, 39],
|
||||||
, 'magenta' : [35, 39]
|
'green' : [32, 39],
|
||||||
, 'red' : [31, 39]
|
'magenta' : [35, 39],
|
||||||
, 'yellow' : [33, 39]
|
'red' : [31, 39],
|
||||||
};
|
'yellow' : [33, 39] };
|
||||||
var style = { 'special': 'grey'
|
|
||||||
, 'number': 'blue'
|
var style =
|
||||||
, 'boolean': 'blue'
|
{ 'special': 'grey',
|
||||||
, 'undefined': 'red'
|
'number': 'blue',
|
||||||
, 'null': 'red'
|
'boolean': 'blue',
|
||||||
, 'string': 'green'
|
'undefined': 'red',
|
||||||
, 'date': 'magenta'
|
'null': 'red',
|
||||||
//, "name": intentionally not styling
|
'string': 'green',
|
||||||
, 'regexp': 'cyan'
|
'date': 'magenta',
|
||||||
}[styleType];
|
// "name": intentionally not styling
|
||||||
|
'regexp': 'cyan' }[styleType];
|
||||||
|
|
||||||
if (style) {
|
if (style) {
|
||||||
return '\033[' + styles[style][0] + 'm' + str +
|
return '\033[' + styles[style][0] + 'm' + str +
|
||||||
'\033[' + styles[style][1] + 'm';
|
'\033[' + styles[style][1] + 'm';
|
||||||
@ -91,14 +93,20 @@ exports.inspect = function(obj, showHidden, depth, colors) {
|
|||||||
|
|
||||||
// Primitive types cannot have properties
|
// Primitive types cannot have properties
|
||||||
switch (typeof value) {
|
switch (typeof value) {
|
||||||
case 'undefined': return stylize('undefined', 'undefined');
|
case 'undefined':
|
||||||
case 'string': return stylize(
|
return stylize('undefined', 'undefined');
|
||||||
JSON.stringify(value).replace(/'/g, "\\'")
|
|
||||||
.replace(/\\"/g, '"')
|
case 'string':
|
||||||
.replace(/(^"|"$)/g, "'"),
|
var simple = JSON.stringify(value).replace(/'/g, "\\'")
|
||||||
'string');
|
.replace(/\\"/g, '"')
|
||||||
case 'number': return stylize('' + value, 'number');
|
.replace(/(^"|"$)/g, "'");
|
||||||
case 'boolean': return stylize('' + value, 'boolean');
|
return stylize(simple, 'string');
|
||||||
|
|
||||||
|
case 'number':
|
||||||
|
return stylize('' + value, 'number');
|
||||||
|
|
||||||
|
case 'boolean':
|
||||||
|
return stylize('' + value, 'boolean');
|
||||||
}
|
}
|
||||||
// For some reason typeof null is "object", so special case here.
|
// For some reason typeof null is "object", so special case here.
|
||||||
if (value === null) {
|
if (value === null) {
|
||||||
@ -114,13 +122,14 @@ exports.inspect = function(obj, showHidden, depth, colors) {
|
|||||||
if (isRegExp(value)) {
|
if (isRegExp(value)) {
|
||||||
return stylize('' + value, 'regexp');
|
return stylize('' + value, 'regexp');
|
||||||
} else {
|
} else {
|
||||||
return stylize('[Function' + (value.name ? ': ' + value.name : '') + ']', 'special');
|
var name = value.name ? ': ' + value.name : '';
|
||||||
|
return stylize('[Function' + name + ']', 'special');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dates without properties can be shortcutted
|
// Dates without properties can be shortcutted
|
||||||
if (isDate(value) && keys.length === 0) {
|
if (isDate(value) && keys.length === 0) {
|
||||||
return stylize(value.toUTCString(), 'date');
|
return stylize(value.toUTCString(), 'date');
|
||||||
}
|
}
|
||||||
|
|
||||||
var base, type, braces;
|
var base, type, braces;
|
||||||
@ -135,7 +144,8 @@ exports.inspect = function(obj, showHidden, depth, colors) {
|
|||||||
|
|
||||||
// Make functions say that they are functions
|
// Make functions say that they are functions
|
||||||
if (typeof value === 'function') {
|
if (typeof value === 'function') {
|
||||||
base = (isRegExp(value)) ? ' ' + value : ' [Function' + (value.name ? ': ' + value.name : '') + ']';
|
var n = value.name ? ': ' + value.name : '';
|
||||||
|
base = (isRegExp(value)) ? ' ' + value : ' [Function' + n + ']';
|
||||||
} else {
|
} else {
|
||||||
base = '';
|
base = '';
|
||||||
}
|
}
|
||||||
@ -222,20 +232,18 @@ exports.inspect = function(obj, showHidden, depth, colors) {
|
|||||||
|
|
||||||
var numLinesEst = 0;
|
var numLinesEst = 0;
|
||||||
var length = output.reduce(function(prev, cur) {
|
var length = output.reduce(function(prev, cur) {
|
||||||
numLinesEst++;
|
numLinesEst++;
|
||||||
if (cur.indexOf('\n') >= 0) {
|
if (cur.indexOf('\n') >= 0) numLinesEst++;
|
||||||
numLinesEst++;
|
return prev + cur.length + 1;
|
||||||
}
|
}, 0);
|
||||||
return prev + cur.length + 1;
|
|
||||||
},0);
|
|
||||||
|
|
||||||
if (length > (require('readline').columns || 50)) {
|
if (length > (require('readline').columns || 50)) {
|
||||||
output = braces[0]
|
output = braces[0] +
|
||||||
+ (base === '' ? '' : base + '\n ')
|
(base === '' ? '' : base + '\n ') +
|
||||||
+ ' '
|
' ' +
|
||||||
+ output.join(',\n ')
|
output.join(',\n ') +
|
||||||
+ ' '
|
' ' +
|
||||||
+ braces[1];
|
braces[1];
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
|
output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
|
||||||
@ -248,21 +256,22 @@ exports.inspect = function(obj, showHidden, depth, colors) {
|
|||||||
|
|
||||||
|
|
||||||
function isArray(ar) {
|
function isArray(ar) {
|
||||||
return ar instanceof Array
|
return ar instanceof Array ||
|
||||||
|| Array.isArray(ar)
|
Array.isArray(ar) ||
|
||||||
|| (ar && ar !== Object.prototype && isArray(ar.__proto__));
|
(ar && ar !== Object.prototype && isArray(ar.__proto__));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function isRegExp(re) {
|
function isRegExp(re) {
|
||||||
var s = ''+ re;
|
var s = '' + re;
|
||||||
return re instanceof RegExp // easy case
|
return re instanceof RegExp || // easy case
|
||||||
|| typeof(re) === 'function' // duck-type for context-switching evalcx case
|
// duck-type for context-switching evalcx case
|
||||||
&& re.constructor.name === 'RegExp'
|
typeof(re) === 'function' &&
|
||||||
&& re.compile
|
re.constructor.name === 'RegExp' &&
|
||||||
&& re.test
|
re.compile &&
|
||||||
&& re.exec
|
re.test &&
|
||||||
&& s.match(/^\/.*\/[gim]{0,3}$/);
|
re.exec &&
|
||||||
|
s.match(/^\/.*\/[gim]{0,3}$/);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -279,7 +288,8 @@ var pWarning;
|
|||||||
|
|
||||||
exports.p = function() {
|
exports.p = function() {
|
||||||
if (!pWarning) {
|
if (!pWarning) {
|
||||||
pWarning = 'util.p will be removed in future versions of Node. Use util.puts(util.inspect()) instead.\n';
|
pWarning = 'util.p will be removed in future versions of Node. ' +
|
||||||
|
'Use util.puts(util.inspect()) instead.\n';
|
||||||
exports.error(pWarning);
|
exports.error(pWarning);
|
||||||
}
|
}
|
||||||
for (var i = 0, len = arguments.length; i < len; ++i) {
|
for (var i = 0, len = arguments.length; i < len; ++i) {
|
||||||
@ -293,15 +303,16 @@ function pad(n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
|
||||||
|
'Oct', 'Nov', 'Dec'];
|
||||||
|
|
||||||
// 26 Feb 16:19:34
|
// 26 Feb 16:19:34
|
||||||
function timestamp() {
|
function timestamp() {
|
||||||
var d = new Date();
|
var d = new Date();
|
||||||
return [d.getDate()
|
var time = [pad(d.getHours()),
|
||||||
, months[d.getMonth()]
|
pad(d.getMinutes()),
|
||||||
, [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':')
|
pad(d.getSeconds())].join(':');
|
||||||
].join(' ');
|
return [d.getDate(), months[d.getMonth()], time].join(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -313,7 +324,8 @@ exports.log = function(msg) {
|
|||||||
var execWarning;
|
var execWarning;
|
||||||
exports.exec = function() {
|
exports.exec = function() {
|
||||||
if (!execWarning) {
|
if (!execWarning) {
|
||||||
execWarning = 'util.exec has moved to the "child_process" module. Please update your source code.';
|
execWarning = 'util.exec has moved to the "child_process" module.' +
|
||||||
|
' Please update your source code.';
|
||||||
error(execWarning);
|
error(execWarning);
|
||||||
}
|
}
|
||||||
return require('child_process').exec.apply(this, arguments);
|
return require('child_process').exec.apply(this, arguments);
|
||||||
@ -330,8 +342,13 @@ exports.pump = function(readStream, writeStream, callback) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!readStream.pause) readStream.pause = function() {readStream.emit('pause');};
|
if (!readStream.pause) {
|
||||||
if (!readStream.resume) readStream.resume = function() {readStream.emit('resume');};
|
readStream.pause = function() {readStream.emit('pause');};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!readStream.resume) {
|
||||||
|
readStream.resume = function() {readStream.emit('resume');};
|
||||||
|
}
|
||||||
|
|
||||||
readStream.addListener('data', function(chunk) {
|
readStream.addListener('data', function(chunk) {
|
||||||
if (writeStream.write(chunk) === false) readStream.pause();
|
if (writeStream.write(chunk) === false) readStream.pause();
|
||||||
@ -368,6 +385,7 @@ exports.pump = function(readStream, writeStream, callback) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inherit the prototype methods from one constructor into another.
|
* Inherit the prototype methods from one constructor into another.
|
||||||
*
|
*
|
||||||
@ -382,11 +400,8 @@ exports.pump = function(readStream, writeStream, callback) {
|
|||||||
* @param {function} superCtor Constructor function to inherit prototype from.
|
* @param {function} superCtor Constructor function to inherit prototype from.
|
||||||
*/
|
*/
|
||||||
exports.inherits = function(ctor, superCtor) {
|
exports.inherits = function(ctor, superCtor) {
|
||||||
ctor.super_ = superCtor;
|
ctor.super_ = superCtor;
|
||||||
ctor.prototype = Object.create(superCtor.prototype, {
|
ctor.prototype = Object.create(superCtor.prototype, {
|
||||||
constructor: {
|
constructor: { value: ctor, enumerable: false }
|
||||||
value: ctor,
|
});
|
||||||
enumerable: false
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
1024
src/node.js
1024
src/node.js
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user