educastellano/template-format

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple string formatting with support for nested data.

npm install template-format
const formattedText = format(text, data, options={})
ParameterTypeDefaultDescription
textstringText to format
objectobjectThe object or array containing the data to be used for formatting.
optionsobject{}Optional Extra options, read below.
options.regexregex/{(.*?)}/gOptional Alternative regex for different format syntaxes (i.e.: Hello {{name}}!). Must include the global match modifier (g).
options.skipUndefinedobjectfalseOptional Skips formatting parameters which are missing in the object, keeping the original text. Otherwise they'll be replaced by an empty string.
options.spreadTokenstring$nOptional Token used on arrays to indicate that the following attributes have to be applied in each element (See example below).
options.spreadSeparatorstring,Optional String used on arrays to separate of the formatting in each element.
import format from 'template-format'

With objects

format('Hello {name}, happy {age} bday!', { name: 'Bob', age: 32 })
// 'Hello Bob, happy 32 bday!'

With arrays

format('Hello {0}, happy {1} bday!', ['Bob', 32])
// 'Hello Bob, happy 32 bday!'

With nested data

format('Hello {bob.name}, happy {bob.age} bday! I call you at {bob.contact.phone}', {
        bob: {
            name: 'Bob', 
            age: 32, 
            contact: {
                phone: '978090909'
            }
        }
    })
// 'Hello Bob, happy 32 bday! I call you at 978090909'

Spread arrays

format('Hello {people.$n.name}!', { people: [{ name: 'Bob' }, { name: 'Mary' }] })
// 'Hello Bob,Mary!'

Other Options

  • Skip undefined attributes:
format('Hello {name}, happy {age} bday!', { name: 'Bob' })
// 'Hello Bob, happy bday!'
format('Hello {name}, happy {age} bday!', { name: 'Bob' }, { skipUndefined: true })
// 'Hello Bob, happy {age} bday!'
  • Using a different format syntax:
format('Hello {{name}}, happy {{age}} bday!', { name: 'Bob', age: 32}, { regex: /{{(.*?)}}/g })
// 'Hello Bob, happy 32 bday!'
  • Custom spreading
format('Hello {people.$$.name}!', { people: [{ name: 'Bob' }, { name: 'Mary' }] }, { spreadToken: '$$', spreadSeparator: ', ' })
// 'Hello Bob, Mary!'
  • 1.2.0

    • Support to spread formatting on arrays
    • Customizable spreading with spreadToken and spreadSeparator
  • 1.1.0

    • Support to skip undefined attributes
    • Support for alternative format syntaxes
  • 1.0.0

    • Initial release ๐ŸŽ‰

ISC License

About

Simple string formatting with support for nested data

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •