nunjucks-await-filter

0.0.1 • Public • Published

Nunjucks await Filter

Brings async/await functions to your Nunjucks templates.

Build Status Codecov

Usage

Add the filter to your Nunjucks environment, and prepare an async function:

const awaitFilter = require('nunjucks-await-filter')
const environment = nunjucks.configure()
awaitFilter(environment)
 
async function getWeather (city) {
  // This can be any async operation, like fetching data
  // from an external API, or getting records from a database.
  return request('weather.com', { city })
}

Use an async function in your Nunjucks template:

The weather in Toronto is {{ getWeather('Toronto') | await }}

And then render the template however you normally would (as an Express view engine, using env.renderString, etc). getWeather will resolve and the result will show in the rendered template. That's all there is to it!

How it works

It's actually very small, here's almost all of the code:

async function awaitFilter (functionPromise, callback) {
  try {
    // The called function returns a Promise, which we
    // now `await` until its done
    const result = await functionPromise
 
    // Then we call the Nunjucks async filter callback
    callback(null, result)
  } catch (error) {
    // And if the `functionPromise` throws an error
    // Nunjucks will pick it up here
    callback(error)
  }
}

Using Nunjucks Async Filters, this brings the await keyword to Nunjucks templates.

Package Sidebar

Install

npm i nunjucks-await-filter

Weekly Downloads

38

Version

0.0.1

License

MIT

Unpacked Size

4.62 kB

Total Files

4

Last publish

Collaborators

  • jasonetco