furmat v2.0.0
fürmat

super powered
printf&util.formatequivalent string formatting, with locals & chainable modifiers.
Install
npm install --production --save furmatAPI
furmat(options)
- options (
Object, optional): configuration object- chalk (
Boolean, optional): enable/disable Chalk modifiers Default: true - locals (
Object, optional): locals object (key => valuepairs) - modifers (
Object, optional): modifiers object (name => functionpairs)
- 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 AThe 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 casedyou can also chain modifiers:
format('%s:upper:first | %s:lower:first', 'a', 'B')output
A | bChalk 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