Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Improve util.format() compatibility with browser.

Fixes #1434.
  • Loading branch information...
commit 858d2cf3a90bb86a41df4a5d4d549ebde048eec6 1 parent ad31e5a
koichik authored
View
5 doc/api/util.markdown
@@ -17,9 +17,10 @@ argument. Supported placeholders are:
* `%j` - JSON.
* `%%` - single percent sign (`'%'`). This does not consume an argument.
-If the placeholder does not have a corresponding argument, `undefined` is used.
+If the placeholder does not have a corresponding argument, the placehoder is

s/placehoder/placeholder/

LGTM apart from that.

@koichik Owner
koichik added a note

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
+not replaced.
- util.format('%s:%s', 'foo'); // 'foo:undefined'
+ util.format('%s:%s', 'foo'); // 'foo:%s'
If there are more arguments than placeholders, the extra arguments are
converted to strings with `util.inspect()` and these strings are concatenated,
View
4 lib/util.js
@@ -34,7 +34,9 @@ exports.format = function(f) {
var i = 1;
var args = arguments;
+ var len = args.length;
var str = String(f).replace(formatRegExp, function(x) {
+ if (i >= len) return x;
switch (x) {
case '%s': return String(args[i++]);
case '%d': return Number(args[i++]);
@@ -44,7 +46,7 @@ exports.format = function(f) {
return x;
}
});
- for (var len = args.length, x = args[i]; i < len; x = args[++i]) {
+ for (var x = args[i]; i < len; x = args[++i]) {
if (x === null || typeof x !== 'object') {
str += ' ' + x;
} else {
View
9 test/simple/test-util-format.js
@@ -47,3 +47,12 @@ assert.equal(util.format('%j', '42'), '"42"');
assert.equal(util.format('%%s%s', 'foo'), '%sfoo');
+assert.equal(util.format('%s'), '%s');
+assert.equal(util.format('%s', undefined), 'undefined');
+assert.equal(util.format('%s', 'foo'), 'foo');
+assert.equal(util.format('%s:%s'), '%s:%s');
+assert.equal(util.format('%s:%s', undefined), 'undefined:%s');
+assert.equal(util.format('%s:%s', 'foo'), 'foo:%s');
+assert.equal(util.format('%s:%s', 'foo', 'bar'), 'foo:bar');
+assert.equal(util.format('%s:%s', 'foo', 'bar', 'baz'), 'foo:bar baz');
+
@bnoordhuis

s/placehoder/placeholder/

LGTM apart from that.

@koichik

Thanks!

Please sign in to comment.
Something went wrong with that request. Please try again.