JaneJeon / quick-format-unescaped

Solves a problem with util.format

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

quick-format-unescaped

unescaped ?

Sometimes you want to embed the results of quick-format into another string, and then escape the whole string.

usage

var format = require('quick-format-unescaped')()
format('hello %s %j %d', ['world', [{ obj: true }, 4, { another: 'obj' }]])

To specify custom formatters, pass in opt.formatters:

const build = require('quick-format-unescaped')
const format = build({
  formatters: {
    // Pass in whatever % interpolator you want, as long as it's a single character;
    // in this case, it's `t`.
    // The formatter should be a function that takes in a value and returns the formatted value.
    t: time => new Date(time).toLocaleString()
  }
})
format('hello %s at %t', ['world', Date.now()])

format(fmt, parameters, [options])

fmt

A printf-like format string. Example: 'hello %s %j %d'

parameters

Array of values to be inserted into the format string. Example: ['world', {obj:true}]

options.stringify

Passing an options object as the third parameter with a stringify will mean any objects will be passed to the supplied function instead of an the internal tryStringify function. This can be useful when using augmented capability serializers such as fast-safe-stringify or fast-redact.

caveats

By default quick-format-unescaped uses JSON.stringify instead of util.inspect, this means functions will not be serialized.

Benchmarks

Node 8.11.2

util*100000: 350.325ms
quick*100000: 268.141ms
utilWithTailObj*100000: 586.387ms
quickWithTailObj*100000: 280.200ms
util*100000: 325.735ms
quick*100000: 270.251ms
utilWithTailObj*100000: 492.270ms
quickWithTailObj*100000: 261.797ms

Node 10.4.0

util*100000: 301.035ms
quick*100000: 217.005ms
utilWithTailObj*100000: 404.778ms
quickWithTailObj*100000: 236.176ms
util*100000: 286.349ms
quick*100000: 214.646ms
utilWithTailObj*100000: 388.574ms
quickWithTailObj*100000: 226.036ms

Acknowledgements

Sponsored by nearForm

About

Solves a problem with util.format

License:MIT License


Languages

Language:JavaScript 100.0%