diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2011-07-29 19:26:45 +0400 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2011-07-30 04:11:31 +0400 |
commit | 874260b40fefc03aec7638a736b004b3ca0c23f3 (patch) | |
tree | d6f02f20d36cbaeabd19d706f2b0b7db6ef3cd0a /lib | |
parent | 9010f5fbab2695e6c0435db396f3e92118da6d76 (diff) |
util: add sprintf-like format() function
Fixes #1407.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/console.js | 44 | ||||
-rw-r--r-- | lib/util.js | 37 |
2 files changed, 39 insertions, 42 deletions
diff --git a/lib/console.js b/lib/console.js index 54a4d811fe5..873d27c4e89 100644 --- a/lib/console.js +++ b/lib/console.js @@ -20,45 +20,10 @@ // USE OR OTHER DEALINGS IN THE SOFTWARE. var writeError = process.binding('stdio').writeError; - -// console object -var formatRegExp = /%[sdj]/g; -function format(f) { - var util = require('util'); - - if (typeof f !== 'string') { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(util.inspect(arguments[i])); - } - return objects.join(' '); - } - - - var i = 1; - var args = arguments; - var str = String(f).replace(formatRegExp, function(x) { - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': return JSON.stringify(args[i++]); - default: - return x; - } - }); - for (var len = args.length, x = args[i]; i < len; x = args[++i]) { - if (x === null || typeof x !== 'object') { - str += ' ' + x; - } else { - str += ' ' + util.inspect(x); - } - } - return str; -} - +var util = require('util'); exports.log = function() { - process.stdout.write(format.apply(this, arguments) + '\n'); + process.stdout.write(util.format.apply(this, arguments) + '\n'); }; @@ -66,7 +31,7 @@ exports.info = exports.log; exports.warn = function() { - writeError(format.apply(this, arguments) + '\n'); + writeError(util.format.apply(this, arguments) + '\n'); }; @@ -74,7 +39,6 @@ exports.error = exports.warn; exports.dir = function(object) { - var util = require('util'); process.stdout.write(util.inspect(object) + '\n'); }; @@ -105,6 +69,6 @@ exports.trace = function(label) { exports.assert = function(expression) { if (!expression) { var arr = Array.prototype.slice.call(arguments, 1); - require('assert').ok(false, format.apply(this, arr)); + require('assert').ok(false, util.format.apply(this, arr)); } }; diff --git a/lib/util.js b/lib/util.js index ae6cc2da6aa..0630d94b895 100644 --- a/lib/util.js +++ b/lib/util.js @@ -22,6 +22,38 @@ var events = require('events'); +var formatRegExp = /%[sdj]/g; +exports.format = function(f) { + if (typeof f !== 'string') { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var str = String(f).replace(formatRegExp, function(x) { + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': return JSON.stringify(args[i++]); + default: + return x; + } + }); + for (var len = args.length, x = args[i]; i < len; x = args[++i]) { + if (x === null || typeof x !== 'object') { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +} + + exports.print = function() { for (var i = 0, len = arguments.length; i < len; ++i) { process.stdout.write(String(arguments[i])); @@ -59,7 +91,7 @@ var error = exports.error = function(x) { * @param {Boolean} colors Flag to turn on ANSI escape codes to color the * output. Default is false (no coloring). */ -exports.inspect = function(obj, showHidden, depth, colors) { +function inspect(obj, showHidden, depth, colors) { var seen = []; var stylize = function(str, styleType) { @@ -279,7 +311,8 @@ exports.inspect = function(obj, showHidden, depth, colors) { return output; } return format(obj, (typeof depth === 'undefined' ? 2 : depth)); -}; +} +exports.inspect = inspect; function isArray(ar) { |