all files / liquidjs/tags/ raw.js

100% Statements 14/14
100% Branches 2/2
100% Functions 3/3
100% Lines 12/12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25   131×       16× 13×           11×        
const Promise = require('any-promise')
 
module.exports = function (liquid) {
  liquid.registerTag('raw', {
    parse: function (tagToken, remainTokens) {
      this.tokens = []
 
      var stream = liquid.parser.parseStream(remainTokens)
      stream
        .on('token', token => {
          if (token.name === 'endraw') stream.stop()
          else this.tokens.push(token)
        })
        .on('end', x => {
          throw new Error(`tag ${tagToken.raw} not closed`)
        })
      stream.start()
    },
    render: function (scope, hash) {
      var tokens = this.tokens.map(token => token.raw).join('')
      return Promise.resolve(tokens)
    }
  })
}