Home Reference Source

Function

Static Public Summary
public

render(template: string, args: ...any): string

Renders a template by substituting variable placeholders with provided data.

Static Public

public render(template: string, args: ...any): string source

import {render} from 'ez-string/public/ez-string.js'

Renders a template by substituting variable placeholders with provided data.

Params:

NameTypeAttributeDescription
template string

string with positional or named parameters enclosed in curly braces

args ...any

either multiple values when using positional parameters, or a single objects with names of the fields corresponding to the names used in the template

Return:

string

template string with interpolated variables

Example:

const render = require('ez-string').render;
let book;

// Format using variable's position
book = render('One of my favorite books is "{0}" by {1}.', 'The Name of the Wind', 'Patrick Rothfuss');
// book = 'One of my favorite books is "The Name of the Wind" by Patrick Rothfuss.'

// Format using variable's name
// Variable names must use A-Za-z0-9$_
book = render('One of my favorite books is "{title}" by {author}.',
     { title: 'The Name of the Wind', author: 'Patrick Rothfuss'});
// book = 'One of my favorite books is "The Name of the Wind" by Patrick Rothfuss.'

// Curly braces are escaped by using double braces
let example;
example = render('{{title}}');
// example = '{title}'

// One can use array indices
book = render('"{arr[0]}" was first published in {arr[1]}.',
     { arr: ['The Hobbit', 1937]});
// book = '"The Hobbit" was first published in 1937.'

// One can use object properties.
// Properties with names consisting of A-Za-z0-9$_ can be accessed using property notation
// Properties with other names can be accessed using index notation
book = render('"{book.title}" was written by {book.author["first name"]} {book.author["last name"]}. It was published in {book.year}.', {
         book: {
             title: 'Marina',
             year : 1999,
             author: {
                 'first name': 'Carlos',
                 'last name': 'Zafon'
             }
         }
     });
 // book = '"Marina" was written by Carlos Zafon. It was published in 1999.'

// If a property name contains a quote character or backslash, they need to be escaped.
// Quotes are prepended by a backslash
// Backslashes need to be doubled
example = render('{data["\\\\"]}', {
     data: {'\\': 'backslash'}
});
// example = 'backslash'
example = render('{data["\\""]}', {
     data: {'"': 'quote'}
});
// example = 'quote'