all files / liquidjs/tags/ assign.js

100% Statements 15/15
100% Branches 0/0
100% Functions 3/3
100% Lines 15/15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24    132×   41× 41× 40× 40×     41× 41× 41× 41×        
'use strict'
const Liquid = require('..')
const lexical = Liquid.lexical
const re = new RegExp(`(${lexical.identifier.source})\\s*=(.*)`)
const assert = require('../src/util/assert.js')
const types = require('../src/scope').types
 
module.exports = function (liquid) {
  liquid.registerTag('assign', {
    parse: function (token) {
      let match = token.args.match(re)
      assert(match, `illegal token ${token.raw}`)
      this.key = match[1]
      this.value = match[2]
    },
    render: function (scope) {
      let ctx = Object.create(types.AssignScope)
      ctx[this.key] = liquid.evalValue(this.value, scope)
      scope.push(ctx)
      return Promise.resolve('')
    }
  })
}