This package has been deprecated

Author message:

moved to @debonet/es6format

es6format

1.0.1 • Public • Published

es6format.js

String formatting that replicates the ES6 template operator but executes at runtime.

INSTALLATION

	npm install es6format

USAGE

	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.

Package Sidebar

Install

npm i es6format

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

5.44 kB

Total Files

4

Last publish

Collaborators

  • debonet