A simple string template function based on named or indexed arguments
var format = require("string-template") var greeting // Format using an object hash with keys matching [0-9a-zA-Z]+ greeting = format("Hello {name}, you have {count} unread messages", { name: "Robert", count: 12 }) // greeting -> "Hello Robert, you have 12 unread messages" // Format using a number indexed array greeting = format("Hello {0}, you have {1} unread messages", ["Robert", 12]) // greeting -> "Hello Robert, you have 12 unread messages" // Format using optional arguments greeting = format("Hello {0}, you have {1} unread messages", "Robert", 12) // greeting -> "Hello Robert, you have 12 unread messages" // Escape {} pairs by using double {{}} var text = format("{{0}}") // text -> "{0}"
string-template exposes two template compiling options for when you need the additional performance. Arguments passed to the compiled template are of the same structure as the main string-template function, so either a single object/array or a list of arguments.
var compile = require("string-template/compile") var greetingTemplate = compile("Hello {0}, you have {1} unread messages") var greeting = greetingTemplate("Robert", 12) // -> "Hello Robert, you have 12 unread messages"
Passing a truthy second argument to compile will opt into using new Function to generate a function. The function returned contains a literal string concatenation statement, interleaving the correct arguments you have passed in.
var compile = require("string-template/compile") var greetingTemplate = compile("Hello {0}, you have {1} unread messages", true) // -> greetingTemplate generated using new Function var greeting = greetingTemplate(["Robert", 12]) // -> "Hello Robert, you have 12 unread messages"
npm install string-template