47 lines
1.3 KiB
Markdown
47 lines
1.3 KiB
Markdown
|
# extsprintf: extended POSIX-style sprintf
|
||
|
|
||
|
Stripped down version of s[n]printf(3c). We make a best effort to throw an
|
||
|
exception when given a format string we don't understand, rather than ignoring
|
||
|
it, so that we won't break existing programs if/when we go implement the rest
|
||
|
of this.
|
||
|
|
||
|
This implementation currently supports specifying
|
||
|
|
||
|
* field alignment ('-' flag),
|
||
|
* zero-pad ('0' flag)
|
||
|
* always show numeric sign ('+' flag),
|
||
|
* field width
|
||
|
* conversions for strings, decimal integers, and floats (numbers).
|
||
|
* argument size specifiers. These are all accepted but ignored, since
|
||
|
Javascript has no notion of the physical size of an argument.
|
||
|
|
||
|
Everything else is currently unsupported, most notably: precision, unsigned
|
||
|
numbers, non-decimal numbers, and characters.
|
||
|
|
||
|
Besides the usual POSIX conversions, this implementation supports:
|
||
|
|
||
|
* `%j`: pretty-print a JSON object (using node's "inspect")
|
||
|
* `%r`: pretty-print an Error object
|
||
|
|
||
|
# Example
|
||
|
|
||
|
First, install it:
|
||
|
|
||
|
# npm install extsprintf
|
||
|
|
||
|
Now, use it:
|
||
|
|
||
|
var mod_extsprintf = require('extsprintf');
|
||
|
console.log(mod_extsprintf.sprintf('hello %25s', 'world'));
|
||
|
|
||
|
outputs:
|
||
|
|
||
|
hello world
|
||
|
|
||
|
# Also supported
|
||
|
|
||
|
**printf**: same args as sprintf, but prints the result to stdout
|
||
|
|
||
|
**fprintf**: same args as sprintf, preceded by a Node stream. Prints the result
|
||
|
to the given stream.
|