@debonet/es6format
v1.0.1
Published
String formatting that replicates the ES6 template operator but executes at runtime.
Maintainers
Readme
es6format.js
String formatting that replicates the ES6 template operator but executes at runtime.
INSTALLATION
npm install es6formatUSAGE
const format = require( "es6format" );
console.log(
format( "Hello, ${0}!", "World" )
);
// output: Hello, World!
format.bindTo( String, 'using' );
console.log(
"Hello, ${0}!".using( "World" )
);
// output: Hello, World!DOCUMENTATION
Usage is straightforward:
format( <template-string>, ...args ) Arguments passed to the function are made available to the template via the following ways:
index ${0}
to reference arugments by order
format( "Hello, ${0}!", "World" );strings ${name}
to reference any fields of arguments
format( "Call me ${name}.", { name : "Ishmael" });NOTE: in cases where multiple arguments include the same field, the last argument takes precidence. Use fully defined object references to get access to the others. See below
format(
"Don't call me ${name}.",
{ name : "Ishmael" },
{ name : "Bob"}
);'arg'+index ${arg1}
to use arguments within expressions or to access argument fields. Particularly handy to disambiguate fields when multiple arguments have them (e.g. ${arg2.name})
format(
"Using ${name} gives you ${arg1.name} not ${arg0.name}",
{ name : "Ishmael" },
{ name : "Bob"}
);to use the argument in a function
format( "B is letter ${arg0.indexOf('B')} letter", "ABC" );expressions ${a + b}
format( "the sum of ${a} and ${b} is ${a + b}", {a: 2, b: 5} );methods ${arg3.method()}
format( "Please don't ${arg0.toLowerCase()}", "YELL" );args[index] ${args[3]}
to reference arugments programatically (e.g. ${args[arg0]})
format( "I am ${args[arg0]}", 1, "right", "wrong" ) ${x=3}
to set values for use later in the format string (e.g. ${x=a+3})
format(
"${arg0}^2 is ${x=arg0*arg0}, and squared again is ${x*x}",
3
)Arbitrary code ${ ...some computation } or ${ ...some computation, 'output' }
format(
"my favorite mice are ${ args.join(' mouse, ') }",
"Mickey", "Minie", "Mighty"
)and
format(
"the password is a ${ arg0.substring( arg0.indexOf( '{' ) + 1, arg0.indexOf( '}' ))}",
"hidden{secret}within"
)and
format(
"x.a is ${ x = { a : arg0 + arg1 }, 'set' } to ${x.a}",
2, 3
)and even,
format(
"${args.reduce((o,i)=>{if (o<3) return o+i; return i})}",
1,2,3,4,5,6,7
)WARNING
es6format makes use of Function(), so it should never be called on format strings that are not known to be safe.
