furmat
v2.0.0
Published
super powered printf & util.format equivalent string formatting, with locals & chainable modifiers
Downloads
29
Readme
fürmat
super powered
printf
&util.format
equivalent string formatting, with locals & chainable modifiers.
Install
npm install --production --save furmat
API
furmat([options])
- options (
Object
, optional): configuration object- chalk (
Boolean
, optional): enable/disable Chalk modifiers Default: true - locals (
Object
, optional): locals object (key => value
pairs) - modifers (
Object
, optional): modifiers object (name => function
pairs)
- chalk (
Returns: Function
The string formatting function.
const format = furmat({
locals: {
name: 'Ahmad'
},
modifiers: {
capitalize: (string) => string.charAt(0).toUpperCase() + string.slice(1),
upper: (string) => string.toUpperCase(),
first: (string) => string.charAt(0)
}
})
console.log(format('%s:capitalize %foo:upper:first', 'hello'))
the above example should output:
Hello A
The returned function behaves in an identical manner to util.format
, with additional abilities to process locals
& modifiers
The first argument is a string that contains zero or more placeholders. Each placeholder is replaced with the converted value from its corresponding argument. Supported placeholders are:
%s
- String.%d
- Number (both integer and float).%j
- JSON. Replaced with the string'[Circular]'
if the argument contains circular references.%
- single percent sign ('%'). This does not consume an argument.
If the placeholder does not have a corresponding argument, the placeholder is not replaced.
format('%s:%s:bar', 'foo') // 'foo:%s:bar'
If there are more arguments than placeholders, the extra arguments are converted to strings with util.inspect()
and these strings are concatenated, delimited by a space.
format('%s:%s', 'foo', 'bar', 'baz') // 'foo:bar baz'
you can add predefined locals
and modify placeholders & locals by attaching modifiers
:
Modifiers
Modifiers are references to named functions meant to modify the placeholder,
example
const format = furmat({
modifiers: {
upper: (string) => string.toUpperCase(),
lower: (string) => string.toLowerCase(),
first: (string) => string.charAt(0)
}
})
format('%s:upper | %s:lower', 'this will become upper cased', 'THIS WILL BECOME LOWER CASED')
output
THIS WILL BECOME UPPER CASED | this will become lower cased
you can also chain modifiers:
format('%s:upper:first | %s:lower:first', 'a', 'B')
output
A | b
Chalk Styles Modifiers
Fürmat includes Chalk Styles modifiers, which are useful for console logging. See oh-my-log
.
example
const format = furmat()
format('%s:red', 'this text will be red in the console')
you can disable the Chalk modifiers by simply setting the chalk
option to false:
const format = furmat({
chalk: false
})
format('%s:red', 'plain text')
Locals
Locals are named variable references that behave in an identical manner to placeholders, but with a pre-defined value set at the time of creating the furmat
function
example
const format = furmat({
locals: {
name: 'Slim Shady',
action: 'please stand up?'
}
})
format('Will the real %name %action')
output
Will the real Slim Shady please stand up?
you can also attach modifiers
to locals
:
const format = furmat({
modifiers: {
upper: (value) => value.toUpperCase(),
lower: (value) => value.toLowerCase()
},
locals: {
name: 'Slim Shady',
action: 'please stand up?'
}
})
format('Will the real %name:lower %action:upper')
output
Will the real slim shady PLEASE STAND UP?
License: ISC • Copyright: ahmadnassri.com • Github: @ahmadnassri • Twitter: @ahmadnassri