String formatting library for node.js
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test
.gitignore
.travis.yml
README.md
package.json
sf.js

README.md

sf

Build Status

String formatting library for node.js.

Installation

$ npm install sf

Quick Examples

var sf = require("sf");

sf("{who} has a {what}", { who: 'dog', what: 'tail' });
// returns: dog has a tail

sf("{0} has a {1}", 'dog', 'tail');
// returns: dog has a tail

sf("{0:#,##0.00}", 2123.1);
// returns: 2,123.10

sf("{0,15:#,##0.00}", 2123.1);
// returns:        2,123.10

sf("{a.b}", { a: { b: 'test' }});
// returns: test

sf("{a.z.c}", { a: { b: 'test' }});
// throws an error

sf("{a.?z.?c}", { a: { b: 'test' }});
// returns:

sf("{a[0]}", { a: [ 'foo', 'bar' ]});
// returns: foo

sf("{a[-1]}", { a: [ 'foo', 'bar' ]});
// returns: bar

sf.log("{who} has a {what}", { who: 'dog', what: 'tail' });
// outputs to standard out: dog has a tail

sf("{0:^d 'Days,' h:mm:ss.fff}", new sf.TimeSpan(8173818181));
// returns: 94 Days, 14:30:18.181

Format Specifiers

The format is similar to C#'s string.format. The text inside the curly braces is {indexOrName[,alignment][:formatString]}. If alignment is positive the text is right aligned. If alignment is negative it will be left aligned.

Object

Specifier Name
json JSON.stringify
inspect util.inspect

Numbers

Specifier Name Example Output
0 Zero placeholder {0:00.0000} 02.1200
# Digit placeholder {0:#,###} 1,234
x Lowercase hex {0:x4} 01fc
X Uppercase hex {0:X4} 01FC

Dates

Specifier Name Example
sd Short date 10/12/2002
D Long date December 10, 2002
t Short time 10:11 PM
T Long time 10:11:29 PM
fdt Full date & time December 10, 2002 10:11 PM
F Full date & time (long) December 10, 2002 10:11:29 PM
g Default date & time 10/12/2002 10:11 PM
G Default date & time (long) 10/12/2002 10:11:29 PM
md Month day pattern December 10
r RFC1123 date string Tue, 10 Dec 2002 22:11:29 +0500
s Sortable date string 2002-12-10T22:11:29
d Date single digit 1
dd Date leading zero 01
ddd Short day name Mon
dddd Long day name Monday
f Fraction of second (1 digit) 1
ff Fraction of second (2 digit) 24
fff Fraction of second (3 digit) 345
h Hour 12-hour format 1 digit 5
hh Hour 12-hour format 2 digits 05
H Hour 24-hour format 1 digit 5
HH Hour 24-hour format 2 digits 05
mm Minutes 2 digits 23
M Month single digit 2
MM Month leading zero 02
MMM Month short name Feb
MMMM Month long name February
ss Seconds 2 digits 54
tt AM/PM AM
yy Year 2 digits 12
yyyy Year 4 digits 2012
zz Time zone offset 05
+zz Time zone offset leading + +05
zzz Time zone offset full 05:00
zzzz Time zone offset full 0500
+zzzz Time zone offset full leading + +0500

sf.TimeSpan

Specifier Name Example
y Years 2
M Months 6
d Days 8
h Hours 10
m Minutes 15
s Seconds 5
f Fraction of Seconds 9

If you prefix the specifier with '^' you will get the total number of that value. For example '^s' will output the total number of seconds in the time span. Where as 's' will only output the number of seconds in a minute.

If you repeat characters the value will be prefixed with zeros.

sf.indent(str, options)

Helper function to word wrap and indent a string.

Arguments

  • str - The string to indent and wrap.
  • options
  • prefix - The prefix to appear at the beginning of each new line.
  • wordwrap - The maximum length of each line.

Helper Functions

  • sf.log(formatString [, args...]);
  • sf.info(formatString [, args...]);
  • sf.warn(formatString [, args...]);
  • sf.error(formatString [, args...]);