Socket
Socket
Sign inDemoInstall

@momsfriendlydevco/template

Package Overview
Dependencies
0
Maintainers
5
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @momsfriendlydevco/template

ES6 template renderer with support for dotted notation and handlebars


Version published
Weekly downloads
0
decreased by-100%
Maintainers
5
Install size
7.34 kB
Created
Weekly downloads
 

Readme

Source

@MomsFriendlyDevCo/Template

Simple ES6 template renderer.

Features:

  • Optional compile step
  • Supports {{handlebars}} style formatting as well as ${es6Templates}}
  • Supports dotted style adressing - even with arrays e.g. {{foo.0.bar.1.baz}}
  • Tiny with no-dependencies
var template = require('@momsfriendlydevco/template');

template('Hello ${name}`, {name: 'Matt'}) //= "Hello Matt"
template('Hello {{name}}`, {name: 'Matt'}) //= "Hello Matt" (same with handlebars syntax)
template('Random chance: ${Math.floor(100 * Math.random())}%') //= "Random Chance: XX%"

Safe undefined

By default this module enables "safe undefined" variables, which means accessing any variable from the global scope which is not defined will simply return undefined rather than raise an error.

The objective here is that template expressions should be forgiving and at least compile if a variable is not defined.

For example:

// With the default {safeUndefined: true}
var template = require('@momsfriendlydevco/template');
template('${foo}', {}); //= "undefined"
template('${foo || 'Nope'}', {}); //= "Nope"
template('${foo ? 'Yes' : 'No'}', {}); //= "No"
template('${foo || bar || baz || 'Nothing'}', {baz: 'Baz!'}); //= "Baz!"
// With {safeUndefined: false}
var template = require('@momsfriendlydevco/template');
template('${foo}', {}); //= Raises an error "foo is undefined"
// All of the above examples also raise as accessing "foo" is not available in the global scope

API

This module exposes two main functions, the global will immediately execute a template and return its value, whereas .compile() will return a reusable function which can be called multiple times.

template(template, locals, options)

Compile and run the template using the provided locals. If options are not provided they are imported from template.defaults.

template.compile(template, options)

Compile and return a function which can take different sets of locals.

var template = require('@momsfriendlydevco/template');

var compiled = template.compile('Hello ${name}');
compiled({name: 'Matt'}); //=> 'Hello Matt'
compiled({name: 'Joe'})); //=> 'Hello Joe'

template.defaults

Default options to use.

OptionTypeDefaultDescription
globalsObject{Date, Math}Global level objects to use when evaluating templates
dottedbooleantrueEnable dotted notation
handlebarsbooleantrueSupport simple handlebars syntax (e.g. {{variable}})
scriptObject{}Additional settings to pass to vm.Script() when compiling the script
safeUndefinedbooleantrueWrap the context in a proxy so accessing top level undefined aliases doesn't throw

Keywords

FAQs

Last updated on 16 Feb 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc