From 48484fe52fb13e6e277323462121258ea83f7d81 Mon Sep 17 00:00:00 2001 From: harttle Date: Sat, 21 Jul 2018 23:42:18 +0800 Subject: [PATCH] 5.0.2 --- dist/liquid.js | 262 +++++++++++++++++++++++---------------------- dist/liquid.min.js | 2 +- package.json | 2 +- 3 files changed, 135 insertions(+), 131 deletions(-) diff --git a/dist/liquid.js b/dist/liquid.js index e3e7d0ae3..73027d73b 100644 --- a/dist/liquid.js +++ b/dist/liquid.js @@ -1,4 +1,4 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Liquid = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 0; i--) { - _.assign(ctx, this.scopes[i]); - } - return ctx; + return this.contexts.reduce(function (ctx, val) { + return Object.assign(ctx, val); + }, Object.create(null)); }, - get: function get(str) { - try { - return this.getPropertyByPath(this.scopes, str); - } catch (e) { - if (!/undefined variable/.test(e.message) || this.opts.strict_variables) { - throw e; + get: function get(path) { + var _this = this; + + var paths = this.propertyAccessSeq(path); + var scope = this.findContextFor(paths[0]) || _.last(this.contexts); + return paths.reduce(function (value, key) { + return _this.readProperty(value, key); + }, scope); + }, + set: function set(path, v) { + var paths = this.propertyAccessSeq(path); + var scope = this.findContextFor(paths[0]) || _.last(this.contexts); + paths.some(function (key, i) { + if (!_.isObject(scope)) { + return true; } - } - }, - set: function set(k, v) { - var scope = this.findScopeFor(k); - setPropertyByPath(scope, k, v); - return this; - }, - push: function push(ctx) { - assert(ctx, 'trying to push ' + ctx + ' into scopes'); - return this.scopes.push(ctx); - }, - pop: function pop() { - return this.scopes.pop(); - }, - findScopeFor: function findScopeFor(key) { - var i = this.scopes.length - 1; - while (i >= 0 && !(key in this.scopes[i])) { - i--; - } - if (i < 0) { - i = this.scopes.length - 1; - } - return this.scopes[i]; + if (i === paths.length - 1) { + scope[key] = v; + return true; + } + if (undefined === scope[key]) { + scope[key] = {}; + } + scope = scope[key]; + }); }, unshift: function unshift(ctx) { - assert(ctx, 'trying to push ' + ctx + ' into scopes'); - return this.scopes.unshift(ctx); + return this.contexts.unshift(ctx); }, - shift: function shift() { - return this.scopes.shift(); + push: function push(ctx) { + return this.contexts.push(ctx); }, - - getPropertyByPath: function getPropertyByPath(scopes, path) { - var paths = this.propertyAccessSeq(path + ''); - if (!paths.length) { - throw new TypeError('undefined variable: ' + path); + pop: function pop(ctx) { + if (!arguments.length) { + return this.contexts.pop(); } - var key = paths.shift(); - var value = getValueFromScopes(key, scopes); - if (_.isNil(value)) { - throw new TypeError('undefined variable: ' + key); + var i = this.contexts.findIndex(function (scope) { + return scope === ctx; + }); + if (i === -1) { + throw new TypeError('scope not found, cannot pop'); } - while (paths.length) { - key = paths.shift(); - value = getValueFromParent(key, value); - if (_.isNil(value)) { - throw new TypeError('undefined variable: ' + key); + return this.contexts.splice(i, 1)[0]; + }, + findContextFor: function findContextFor(key, filter) { + filter = filter || function () { + return true; + }; + for (var i = this.contexts.length - 1; i >= 0; i--) { + var candidate = this.contexts[i]; + if (!filter(candidate)) continue; + if (key in candidate) { + return candidate; } } - return value; + return null; + }, + readProperty: function readProperty(obj, key) { + var val = void 0; + if (key === 'size' && (_.isArray(obj) || _.isString(obj))) { + val = obj.length; + } else if (_.isNil(obj)) { + val = undefined; + } else { + val = obj[key]; + } + if (_.isNil(val) && this.opts.strict_variables) { + throw new TypeError('undefined variable: ' + key); + } + return val; }, /* @@ -987,9 +998,10 @@ var Scope = { * accessSeq("foo[bar.coo]") // ['foo', 'bar'], for bar.coo == 'bar' */ propertyAccessSeq: function propertyAccessSeq(str) { + str = String(str); var seq = []; var name = ''; - var j; + var j = void 0; var i = 0; while (i < str.length) { switch (str[i]) { @@ -1029,6 +1041,10 @@ var Scope = { } } push(); + + if (!seq.length) { + throw new TypeError('invalid path:"' + str + '"'); + } return seq; function push() { @@ -1038,40 +1054,6 @@ var Scope = { } }; -function setPropertyByPath(obj, path, val) { - var paths = (path + '').replace(/\[/g, '.').replace(/\]/g, '').split('.'); - for (var i = 0; i < paths.length; i++) { - var key = paths[i]; - if (!_.isObject(obj)) { - // cannot set property of non-object - return; - } - // for end point - if (i === paths.length - 1) { - return obj[key] = val; - } - // if path not exist - if (undefined === obj[key]) { - obj[key] = {}; - } - obj = obj[key]; - } -} - -function getValueFromParent(key, value) { - return key === 'size' && (_.isArray(value) || _.isString(value)) ? value.length : value[key]; -} - -function getValueFromScopes(key, scopes) { - for (var i = scopes.length - 1; i > -1; i--) { - var scope = scopes[i]; - if (scope.hasOwnProperty(key)) { - return scope[key]; - } - } - throw new TypeError('undefined variable: ' + key); -} - function matchRightBracket(str, begin) { var stack = 1; // count of '[' - count of ']' for (var i = begin; i < str.length; i++) { @@ -1098,10 +1080,17 @@ exports.factory = function (ctx, opts) { }; var scope = Object.create(Scope); scope.opts = _.assign(defaultOptions, opts); - scope.scopes = [ctx || {}]; + scope.contexts = [ctx || {}]; return scope; }; +exports.types = { + AssignScope: Object.create(null), + CaptureScope: Object.create(null), + IncrementScope: Object.create(null), + DecrementScope: Object.create(null) +}; + },{"./lexical.js":7,"./util/assert.js":15,"./util/underscore.js":20}],12:[function(require,module,exports){ 'use strict'; @@ -1171,7 +1160,7 @@ var assert = require('./util/assert.js'); function hash(markup, scope) { var obj = {}; - var match; + var match = void 0; lexical.hashCapture.lastIndex = 0; while (match = lexical.hashCapture.exec(markup)) { var k = match[1]; @@ -1768,18 +1757,11 @@ function assign(object) { object = isObject(object) ? object : {}; var srcs = Array.prototype.slice.call(arguments, 1); srcs.forEach(function (src) { - _assignBinary(object, src); + return Object.assign(object, src); }); return object; } -function _assignBinary(dst, src) { - forOwn(src, function (v, k) { - dst[k] = v; - }); - return dst; -} - function last(arr) { return arr[arr.length - 1]; } @@ -1852,6 +1834,7 @@ exports.uniq = uniq; var resolve = require('resolve-url'); var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/; var urlRe = /^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/; +var _ = require('./underscore'); // https://github.com/jinder/path/blob/master/path.js#L567 exports.extname = function (path) { @@ -1867,13 +1850,13 @@ exports.resolve = function (root, path) { if (Object.prototype.toString.call(root) === '[object Array]') { root = root[0]; } - if (root && root.charAt(root.length - 1) !== '/') { + if (root && _.last(root) !== '/') { root += '/'; } return resolve(root, path); }; -},{"resolve-url":5}],22:[function(require,module,exports){ +},{"./underscore":20,"resolve-url":5}],22:[function(require,module,exports){ 'use strict'; var _ = require('./util/underscore.js'); @@ -1931,6 +1914,7 @@ var Liquid = require('..'); var lexical = Liquid.lexical; var re = new RegExp('(' + lexical.identifier.source + ')\\s*=(.*)'); var assert = require('../src/util/assert.js'); +var types = require('../src/scope').types; module.exports = function (liquid) { liquid.registerTag('assign', { @@ -1941,19 +1925,22 @@ module.exports = function (liquid) { this.value = match[2]; }, render: function render(scope) { - scope.set(this.key, liquid.evalValue(this.value, scope)); + var ctx = Object.create(types.AssignScope); + ctx[this.key] = liquid.evalValue(this.value, scope); + scope.push(ctx); return Promise.resolve(''); } }); }; -},{"..":2,"../src/util/assert.js":15}],24:[function(require,module,exports){ +},{"..":2,"../src/scope":11,"../src/util/assert.js":15}],24:[function(require,module,exports){ 'use strict'; var Liquid = require('..'); var lexical = Liquid.lexical; var re = new RegExp('(' + lexical.identifier.source + ')'); var assert = require('../src/util/assert.js'); +var types = require('../src/scope.js').types; module.exports = function (liquid) { liquid.registerTag('capture', { @@ -1980,13 +1967,15 @@ module.exports = function (liquid) { var _this2 = this; return liquid.renderer.renderTemplates(this.templates, scope).then(function (html) { - scope.set(_this2.variable, html); + var ctx = Object.create(types.CaptureScope); + ctx[_this2.variable] = html; + scope.push(ctx); }); } }); }; -},{"..":2,"../src/util/assert.js":15}],25:[function(require,module,exports){ +},{"..":2,"../src/scope.js":11,"../src/util/assert.js":15}],25:[function(require,module,exports){ 'use strict'; var Liquid = require('..'); @@ -2104,6 +2093,7 @@ module.exports = function (liquid) { var Liquid = require('..'); var lexical = Liquid.lexical; var assert = require('../src/util/assert.js'); +var types = require('../src/scope').types; module.exports = function (liquid) { liquid.registerTag('decrement', { @@ -2113,14 +2103,22 @@ module.exports = function (liquid) { this.variable = match[0]; }, render: function render(scope, hash) { - var v = scope.get(this.variable); - if (typeof v !== 'number') v = 0; - scope.set(this.variable, v - 1); + var context = scope.findContextFor(this.variable, function (ctx) { + return Object.getPrototypeOf(ctx) !== types.CaptureScope && Object.getPrototypeOf(ctx) !== types.AssignScope; + }); + if (!context) { + context = Object.create(types.DecrementScope); + scope.unshift(context); + } + if (typeof context[this.variable] !== 'number') { + context[this.variable] = 0; + } + return --context[this.variable]; } }); }; -},{"..":2,"../src/util/assert.js":15}],29:[function(require,module,exports){ +},{"..":2,"../src/scope":11,"../src/util/assert.js":15}],29:[function(require,module,exports){ 'use strict'; var Liquid = require('..'); @@ -2216,7 +2214,7 @@ module.exports = function (liquid) { } throw e; }).then(function () { - return scope.pop(); + return scope.pop(context); }); }).catch(function (e) { if (e instanceof RenderBreakError && e.message === 'break') { @@ -2324,7 +2322,7 @@ module.exports = function (liquid) { scope.push(hash); return liquid.renderer.renderTemplates(templates, scope); }).then(function (html) { - scope.pop(); + scope.pop(hash); scope.opts.blocks = originBlocks; scope.opts.blockMode = originBlockMode; return html; @@ -2339,6 +2337,7 @@ module.exports = function (liquid) { var Liquid = require('..'); var assert = require('../src/util/assert.js'); var lexical = Liquid.lexical; +var types = require('../src/scope').types; module.exports = function (liquid) { liquid.registerTag('increment', { @@ -2348,14 +2347,24 @@ module.exports = function (liquid) { this.variable = match[0]; }, render: function render(scope, hash) { - var v = scope.get(this.variable); - if (typeof v !== 'number') v = 0; - scope.set(this.variable, v + 1); + var context = scope.findContextFor(this.variable, function (ctx) { + return Object.getPrototypeOf(ctx) !== types.CaptureScope && Object.getPrototypeOf(ctx) !== types.AssignScope; + }); + if (!context) { + context = Object.create(types.IncrementScope); + scope.unshift(context); + } + if (typeof context[this.variable] !== 'number') { + context[this.variable] = 0; + } + var val = context[this.variable]; + context[this.variable]++; + return val; } }); }; -},{"..":2,"../src/util/assert.js":15}],33:[function(require,module,exports){ +},{"..":2,"../src/scope":11,"../src/util/assert.js":15}],33:[function(require,module,exports){ 'use strict'; module.exports = function (engine) { @@ -2416,14 +2425,11 @@ module.exports = function (liquid) { } return liquid.getTemplate(layout, scope.opts.root); }).then(function (templates) { - // push the hash scope.push(hash); scope.opts.blockMode = 'output'; return liquid.renderer.renderTemplates(templates, scope); - }) - // pop the hash - .then(function (partial) { - scope.pop(); + }).then(function (partial) { + scope.pop(hash); return partial; }); } @@ -2479,16 +2485,15 @@ module.exports = function (liquid) { var stream = liquid.parser.parseStream(remainTokens); stream.on('token', function (token) { if (token.name === 'endraw') stream.stop();else _this.tokens.push(token); - }).on('end', function (x) { + }).on('end', function () { throw new Error('tag ' + tagToken.raw + ' not closed'); }); stream.start(); }, render: function render(scope, hash) { - var tokens = this.tokens.map(function (token) { + return this.tokens.map(function (token) { return token.raw; }).join(''); - return Promise.resolve(tokens); } }); }; @@ -2545,11 +2550,10 @@ module.exports = function (liquid) { // build array of arguments to pass to sequential promises... collection = collection.slice(offset, offset + limit); if (!cols) cols = collection.length; - var contexts = []; - collection.some(function (item, i) { + var contexts = collection.map(function (item, i) { var ctx = {}; ctx[_this2.variable] = item; - contexts.push(ctx); + return ctx; }); return mapSeries(contexts, function (context, idx) { @@ -2617,4 +2621,4 @@ module.exports = function (liquid) { }; },{"..":2}]},{},[2])(2) -}); \ No newline at end of file +}); diff --git a/dist/liquid.min.js b/dist/liquid.min.js index 2fb7ebc7b..87441ccfd 100644 --- a/dist/liquid.min.js +++ b/dist/liquid.min.js @@ -1 +1 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Liquid=e()}}(function(){return function e(t,r,n){function s(o,u){if(!r[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[o]={exports:{}};t[o][0].call(l.exports,function(e){var r=t[o][1][e];return s(r||e)},l,l.exports,e,t,r,n)}return r[o].exports}for(var i="function"==typeof require&&require,o=0;o|"|'/g,function(e){return f[e]})}function s(e){var t=(e+"").split(".");return t.length>1?t[1].length:0}function i(e){return e+""}function o(e){return function(t,r){var n=function(e,t){return Math.max(s(e),s(t))}(t,r);return e(t,r).toFixed(n)}}function u(e){return c.forOwn(h,function(t,r){return e.registerFilter(r,t)})}var a=e("./src/util/strftime.js"),c=e("./src/util/underscore.js"),l=e("./src/syntax.js").isTruthy,f={"&":"&","<":"<",">":">",'"':""","'":"'"},p={"&":"&","<":"<",">":">",""":'"',"'":"'"},h={abs:function(e){return Math.abs(e)},append:function(e,t){return e+t},capitalize:function(e){return i(e).charAt(0).toUpperCase()+e.slice(1)},ceil:function(e){return Math.ceil(e)},concat:function(e,t){return Array.prototype.concat.call(e,t)},date:function(e,t){var r=e;return"now"===e?r=new Date:c.isString(e)&&(r=new Date(e)),function(e){return e instanceof Date&&!isNaN(e.getTime())}(r)?a(r,t):e},default:function(e,t){return l(e)?e:t},divided_by:function(e,t){return e/t},downcase:function(e){return e.toLowerCase()},escape:n,escape_once:function(e){return n(function(e){return i(e).replace(/&(amp|lt|gt|#34|#39);/g,function(e){return p[e]})}(e))},first:function(e){return e[0]},floor:function(e){return Math.floor(e)},join:function(e,t){return e.join(t)},last:function(e){return e[e.length-1]},lstrip:function(e){return i(e).replace(/^\s+/,"")},map:function(e,t){return e.map(function(e){return e[t]})},minus:o(function(e,t){return e-t}),modulo:o(function(e,t){return e%t}),newline_to_br:function(e){return e.replace(/\n/g,"
")},plus:o(function(e,t){return Number(e)+Number(t)}),prepend:function(e,t){return t+e},remove:function(e,t){return e.split(t).join("")},remove_first:function(e,t){return e.replace(t,"")},replace:function(e,t,r){return i(e).split(t).join(r)},replace_first:function(e,t,r){return i(e).replace(t,r)},reverse:function(e){return e.reverse()},round:function(e,t){var r=Math.pow(10,t||0);return Math.round(e*r,t)/r},rstrip:function(e){return i(e).replace(/\s+$/,"")},size:function(e){return e.length},slice:function(e,t,r){return e.substr(t,void 0===r?1:r)},sort:function(e,t){return e.sort(t)},split:function(e,t){return i(e).split(t)},strip:function(e){return i(e).trim()},strip_html:function(e){return i(e).replace(/|||<.*?>/g,"")},strip_newlines:function(e){return i(e).replace(/\n/g,"")},times:function(e,t){return e*t},truncate:function(e,t,r){return e=i(e),r=void 0===r?"...":r,t=t||16,e.length<=t?e:e.substr(0,t-r.length)+r},truncatewords:function(e,t,r){void 0===r&&(r="...");var n=e.split(" "),s=n.slice(0,t).join(" ");return n.length>t&&(s+=r),s},uniq:function(e){var t={};return(e||[]).filter(function(e){return!t.hasOwnProperty(e)&&(t[e]=!0,!0)})},upcase:function(e){return i(e).toUpperCase()},url_encode:encodeURIComponent};u.filters=h,t.exports=u},{"./src/syntax.js":12,"./src/util/strftime.js":19,"./src/util/underscore.js":20}],2:[function(e,t,r){"use strict";function n(e){(e=i.assign({root:["."],cache:!1,extname:"",dynamicPartials:!0,trim_tag_right:!1,trim_tag_left:!1,trim_value_right:!1,trim_value_left:!1,greedy:!0,strict_filters:!1,strict_variables:!1},e)).root=function(e){return Array.isArray(e)?e:i.isString(e)?[e]:[]}(e.root);var t=Object.create(b);return t.init(g(),d(e),e),t}var s=e("./src/scope"),i=e("./src/util/underscore.js"),o=e("./src/util/assert.js"),u=e("./src/tokenizer.js"),a=e("./src/util/fs.js").statFileAsync,c=e("./src/util/fs.js").readFileAsync,l=e("path"),f=e("./src/util/url.js"),p=e("./src/render.js"),h=e("./src/lexical.js"),g=e("./src/tag.js"),d=e("./src/filter.js"),v=e("./src/parser"),m=e("./src/syntax.js"),y=e("./tags"),j=e("./filters"),x=e("./src/util/promise.js").anySeries,w=e("./src/util/error.js"),b={init:function(e,t,r){return r.cache&&(this.cache={}),this.options=r,this.tag=e,this.filter=t,this.parser=v(e,t),this.renderer=p(),y(this),j(this),this},parse:function(e,t){var r=u.parse(e,t,this.options);return this.parser.parse(r)},render:function(e,t,r){r=i.assign({},this.options,r);var n=s.factory(t,r);return this.renderer.renderTemplates(e,n)},parseAndRender:function(e,t,r){var n=this;return Promise.resolve().then(function(){return n.parse(e)}).then(function(e){return n.render(e,t,r)})},renderFile:function(e,t,r){var n=this;return r=i.assign({},r),this.getTemplate(e,r.root).then(function(e){return n.render(e,t,r)})},evalValue:function(e,t){var r=this.parser.parseValue(e.trim());return this.renderer.evalValue(r,t)},registerFilter:function(e,t){return this.filter.register(e,t)},registerTag:function(e,t){return this.tag.register(e,t)},lookup:function(e,t){t=this.options.root.concat(t||[]);var r=(t=i.uniq(t)).map(function(t){return l.resolve(t,e)});return x(r,function(e){return a(e).then(function(){return e})}).catch(function(r){throw r.message=r.code+": Failed to lookup "+e+" in: "+t,r})},getTemplate:function(e,t){return"undefined"==typeof XMLHttpRequest?this.getTemplateFromFile(e,t):this.getTemplateFromUrl(e,t)},getTemplateFromFile:function(e,t){var r=this;return l.extname(e)||(e+=this.options.extname),this.lookup(e,t).then(function(e){if(r.options.cache){var t=r.cache[e];return t?Promise.resolve(t):c(e).then(function(e){return r.parse(e)}).then(function(t){return r.cache[e]=t})}return c(e).then(function(t){return r.parse(t,e)})})},getTemplateFromUrl:function(e,t){var r,n=this;if(f.valid(e)?r=e:(f.extname(e)||(e+=this.options.extname),r=f.resolve(t||this.options.root,e)),this.options.cache){var s=this.cache[e];if(s)return Promise.resolve(s)}return new Promise(function(t,s){var i=new XMLHttpRequest;i.onload=function(){if(i.status>=200&&i.status<300){var r=n.parse(i.responseText);n.options.cache&&(n.cache[e]=r),t(r)}else s(new Error(i.statusText))},i.onerror=function(){s(new Error("An error occurred whilst sending the response."))},i.open("GET",r),i.send()})},express:function(e){e=e||{};var t=this;return function(r,n,s){o(Array.isArray(this.root)||i.isString(this.root),"illegal views root, are you using express.js?"),e.root=this.root,t.renderFile(r,n,e).then(function(e){return s(null,e)}).catch(function(e){return s(e)})}}};n.lexical=h,n.isTruthy=m.isTruthy,n.isFalsy=m.isFalsy,n.evalExp=m.evalExp,n.evalValue=m.evalValue,n.Types={ParseError:w.ParseError,TokenizationEroor:w.TokenizationError,RenderBreakError:w.RenderBreakError,AssertionError:w.AssertionError},t.exports=n},{"./filters":1,"./src/filter.js":6,"./src/lexical.js":7,"./src/parser":9,"./src/render.js":10,"./src/scope":11,"./src/syntax.js":12,"./src/tag.js":13,"./src/tokenizer.js":14,"./src/util/assert.js":15,"./src/util/error.js":16,"./src/util/fs.js":17,"./src/util/promise.js":18,"./src/util/underscore.js":20,"./src/util/url.js":21,"./tags":33,path:4}],3:[function(e,t,r){"use strict"},{}],4:[function(e,t,r){"use strict"},{}],5:[function(e,t,r){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e,s){"object"===(void 0===r?"undefined":n(r))?t.exports=s():e.resolveUrl=s()}(void 0,function(){return function(){var e=arguments.length;if(0===e)throw new Error("resolveUrl requires at least one argument; got none.");var t=document.createElement("base");if(t.href=arguments[0],1===e)return t.href;var r=document.getElementsByTagName("head")[0];r.insertBefore(t,r.firstChild);for(var n,s=document.createElement("a"),i=1;i=|<|>|\s+contains\s+/],quotedLine:E,numberLine:w,boolLine:b,rangeLine:T,literalLine:j,filterLine:M,tagLine:y,isLiteral:function(e){return j.test(e)},isVariable:function(e){return x.test(e)},parseLiteral:function(e){var t=e.match(w);if(t)return Number(e);if(t=e.match(b))return"true"===e.toLowerCase();if(t=e.match(E))return e.slice(1,-1);throw new TypeError("cannot parse '"+e+"' as literal")},isRange:function(e){return T.test(e)},matchValue:function(e){return d.exec(e)},isInteger:function(e){return S.test(e)}}},{}],8:[function(e,t,r){"use strict";t.exports=function(e){return{"==":function(e,t){return e===t},"!=":function(e,t){return e!==t},">":function(e,t){return null!==e&&null!==t&&e>t},"<":function(e,t){return null!==e&&null!==t&&e=":function(e,t){return null!==e&&null!==t&&e>=t},"<=":function(e,t){return null!==e&&null!==t&&e<=t},contains:function(e,t){return!!e&&("function"==typeof e.indexOf&&e.indexOf(t)>-1)},and:function(t,r){return e(t)&&e(r)},or:function(t,r){return e(t)||e(r)}}}},{}],9:[function(e,t,r){"use strict";var n=e("./lexical.js"),s=e("./util/error.js").ParseError,i=e("./util/assert.js");t.exports=function(e,t){function r(e,t){try{var r=null;return r="tag"===e.type?o(e,t):"value"===e.type?u(e.value):e,r.token=e,r}catch(t){throw new s(t,e)}}function o(t,r){return"continue"===t.name||"break"===t.name?t:e.construct(t,r)}function u(e){var r=n.matchValue(e);i(r,"illegal value string: "+e);var s=r[0];e=e.substr(r.index+r[0].length);for(var o=[];r=n.filter.exec(e);)o.push([r[0].trim()]);return{type:"value",initial:s,filters:o.map(function(e){return t.construct(e)})}}var a={init:function(e){return this.tokens=e,this.handlers={},this},on:function(e,t){return this.handlers[e]=t,this},trigger:function(e,t){var r=this.handlers[e];if("function"==typeof r)return r(t),!0},start:function(){this.trigger("start");for(var e;!this.stopRequested&&(e=this.tokens.shift());)if(!(this.trigger("token",e)||"tag"===e.type&&this.trigger("tag:"+e.name,e))){var t=r(e,this.tokens);this.trigger("template",t)}return this.stopRequested||this.trigger("end"),this},stop:function(){return this.stopRequested=!0,this}};return{parse:function(e){for(var t,n=[];t=e.shift();)n.push(r(t,e));return n},parseTag:o,parseStream:function(e){return Object.create(a).init(e)},parseValue:u}}},{"./lexical.js":7,"./util/assert.js":15,"./util/error.js":16}],10:[function(e,t,r){"use strict";var n=e("./syntax.js"),s=e("./util/promise.js").mapSeries,i=e("./util/error.js").RenderBreakError,o=e("./util/error.js").RenderError,u=e("./util/assert.js"),a={renderTemplates:function(e,t){function r(e){var r=this;return"tag"===e.type?this.renderTag(e,t).then(function(e){return void 0===e?"":e}):"value"===e.type?Promise.resolve().then(function(){return r.evalValue(e,t)}).then(function(e){return void 0===e?"":function(e){return"string"==typeof e?e:JSON.stringify(e)}(e)}):Promise.resolve(e.value)}var n=this;u(t,"unable to evalTemplates: scope undefined");var a="";return s(e,function(e){return r.call(n,e).then(function(e){return a+=e}).catch(function(t){if(t instanceof i)throw t.resolvedHTML=a,t;throw new o(t,e)})}).then(function(){return a})},renderTag:function(e,t){return"continue"===e.name?Promise.reject(new i("continue")):"break"===e.name?Promise.reject(new i("break")):e.render(t)},evalValue:function(e,t){return u(t,"unable to evalValue: scope undefined"),e.filters.reduce(function(e,r){return r.render(e,t)},n.evalExp(e.initial,t))}};t.exports=function(){return Object.create(a)}},{"./syntax.js":12,"./util/assert.js":15,"./util/error.js":16,"./util/promise.js":18}],11:[function(e,t,r){"use strict";var n=e("./util/underscore.js"),s=e("./lexical.js"),i=e("./util/assert.js"),o={getAll:function(){for(var e={},t=this.scopes.length-1;t>=0;t--)n.assign(e,this.scopes[t]);return e},get:function(e){try{return this.getPropertyByPath(this.scopes,e)}catch(e){if(!/undefined variable/.test(e.message)||this.opts.strict_variables)throw e}},set:function(e,t){return function(e,t,r){for(var s=(t+"").replace(/\[/g,".").replace(/\]/g,"").split("."),i=0;i=0&&!(e in this.scopes[t]);)t--;return t<0&&(t=this.scopes.length-1),this.scopes[t]},unshift:function(e){return i(e,"trying to push "+e+" into scopes"),this.scopes.unshift(e)},shift:function(){return this.scopes.shift()},getPropertyByPath:function(e,t){var r=this.propertyAccessSeq(t+"");if(!r.length)throw new TypeError("undefined variable: "+t);var s=r.shift(),i=function(e,t){for(var r=t.length-1;r>-1;r--){var n=t[r];if(n.hasOwnProperty(e))return n[e]}throw new TypeError("undefined variable: "+e)}(s,e);if(n.isNil(i))throw new TypeError("undefined variable: "+s);for(;r.length;)if(s=r.shift(),i=function(e,t){return"size"===e&&(n.isArray(t)||n.isString(t))?t.length:t[e]}(s,i),n.isNil(i))throw new TypeError("undefined variable: "+s);return i},propertyAccessSeq:function(e){function t(){o.length&&n.push(o),o=""}for(var r,n=[],o="",u=0;uh&&g.push(a(h,c.index)),g.push(c[1]?function(r,i,o){var u=i.match(n.tagLine),a={type:"tag",indent:f,line:p.get(o),trim_left:"{%-"===r.slice(0,3),trim_right:"-%}"===r.slice(-3),raw:r,value:i,input:e,file:t};if(!u)throw new s("illegal tag syntax",a);return a.name=u[1],a.args=u[2],a}(c[1],c[2].trim(),c.index):function(r,n,s){return{type:"value",line:p.get(s),trim_left:"{{-"===r.slice(0,3),trim_right:"-}}"===r.slice(-3),raw:r,value:n,input:e,file:t}}(c[3],c[4].trim(),c.index));return e.length>h&&g.push(a(h,e.length)),o(g,r),g},r.whiteSpaceCtrl=o},{"./lexical.js":7,"./util/assert.js":15,"./util/error.js":16,"./util/underscore.js":20,"./whitespace-ctrl.js":22}],15:[function(e,t,r){"use strict";var n=e("./error.js").AssertionError;t.exports=function(e,t){if(!e)throw t=t||"expect "+e+" to be true",new n(t)}},{"./error.js":16}],16:[function(e,t,r){"use strict";function n(){this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}function s(e,t){n.call(this),this.input=t.input,this.line=t.line,this.file=t.file;var r=function(e,t){var r=e.split("\n"),n=Math.max(t-2,1),s=Math.min(t+3,r.length);return l.range(n,s+1).map(function(e){return[e===t?">> ":" ",function(e,t){var r=(t+"").length,n=e+"";return Array(r-n.length).join(" ")+n}(e,s),"| ",r[e-1]].join("")}).join("\n")}(t.input,t.line);this.message=function(e,t){e=e||"",t.file&&(e+=", file:"+t.file);t.line&&(e+=", line:"+t.line);return e}(e.message,t),this.stack=r+"\n"+(this.stack||this.message)+(e.stack?"\nFrom "+e.stack:"")}function i(e,t){s.call(this,{message:e},t)}function o(e,t){l.assign(this,e),this.originalError=e,s.call(this,e,t)}function u(e,t){if(e instanceof u)return e;l.assign(this,e),this.originalError=e,s.call(this,e,t.token)}function a(e){n.call(this),this.message=e+""}function c(e){n.call(this),this.message=e+""}var l=e("./underscore.js");(i.prototype=Object.create(Error.prototype)).constructor=i,(o.prototype=Object.create(Error.prototype)).constructor=o,(u.prototype=Object.create(Error.prototype)).constructor=u,(a.prototype=Object.create(Error.prototype)).constructor=a,(c.prototype=Object.create(Error.prototype)).constructor=c,t.exports={TokenizationError:i,ParseError:o,RenderBreakError:a,AssertionError:c,RenderError:u}},{"./underscore.js":20}],17:[function(e,t,r){"use strict";var n=e("fs");t.exports={readFileAsync:function(e){return new Promise(function(t,r){n.readFile(e,"utf8",function(e,n){e?r(e):t(n)})})},statFileAsync:function(e){return new Promise(function(t,r){n.stat(e,function(e,n){return e?r(e):t(n)})})}}},{fs:3}],18:[function(e,t,r){"use strict";r.anySeries=function(e,t){var r=Promise.reject(new Error("init"));return e.forEach(function(n,s){r=r.catch(function(r){return t(n,s,e)})}),r},r.mapSeries=function(e,t){var r=Promise.resolve("init"),n=[];return e.forEach(function(s,i){r=r.then(function(){return t(s,i,e)}).then(function(e){return n.push(e)})}),r.then(function(){return n})}},{}],19:[function(e,t,r){"use strict";var n=["January","February","March","April","May","June","July","August","September","October","November","December"],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],u={1:"st",2:"nd",3:"rd",default:"th"},a={daysInMonth:function(e){return[31,a.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31]},getDayOfYear:function(e){for(var t=0,r=0;r0;)n=r+n;return n}},l={a:function(e){return o[e.getDay()]},A:function(e){return i[e.getDay()]},b:function(e){return s[e.getMonth()]},B:function(e){return n[e.getMonth()]},c:function(e){return e.toLocaleString()},C:function(e){return a.century(e)},d:function(e){return c.pad(e.getDate(),2)},e:function(e){return c.pad(e.getDate(),2," ")},H:function(e){return c.pad(e.getHours(),2)},I:function(e){return c.pad(e.getHours()%12||12,2)},j:function(e){return c.pad(a.getDayOfYear(e),3)},k:function(e){return c.pad(e.getHours(),2," ")},l:function(e){return c.pad(e.getHours()%12||12,2," ")},L:function(e){return c.pad(e.getMilliseconds(),3)},m:function(e){return c.pad(e.getMonth()+1,2)},M:function(e){return c.pad(e.getMinutes(),2)},p:function(e){return e.getHours()<12?"AM":"PM"},P:function(e){return e.getHours()<12?"am":"pm"},q:function(e){return a.getSuffix(e)},s:function(e){return Math.round(e.valueOf()/1e3)},S:function(e){return c.pad(e.getSeconds(),2)},u:function(e){return e.getDay()||7},U:function(e){return a.getWeekOfYear(e,0)},w:function(e){return e.getDay()},W:function(e){return a.getWeekOfYear(e,1)},x:function(e){return e.toLocaleDateString()},X:function(e){return e.toLocaleTimeString()},y:function(e){return e.getFullYear().toString().substring(2,4)},Y:function(e){return e.getFullYear()},z:function(e){var t=e.getTimezoneOffset()/60*100;return(t>0?"-":"+")+c.pad(Math.abs(t),4)},"%":function(){return"%"}};l.h=l.b,l.N=l.L;t.exports=function(e,t){for(var r="",n=t;;){var s=/%./g,i=s.exec(n);if(!i)return r+n;r+=n.slice(0,s.lastIndex-2),n=n.slice(s.lastIndex);var o=i[0].charAt(1),u=l[o];r+=u?u.call(this,e):"%"+o}}},{}],20:[function(e,t,r){"use strict";function n(e,t){e=e||{};for(var r in e)if(e.hasOwnProperty(r)&&!1===t(e[r],r,e))break;return e}function s(e){var t=void 0===e?"undefined":i(e);return null!=e&&("object"===t||"function"===t)}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=Object.prototype.toString;r.isString=function(e){return e instanceof String||"string"==typeof e},r.isObject=s,r.isArray=function(e){return"[object Array]"===o.call(e)},r.isNil=function(e){return null===e||void 0===e},r.isError=function(e){return"Error"===Object.prototype.toString.call(e).substr(-6,5)||"string"==typeof e.message&&"string"==typeof e.name},r.range=function(e,t,r){1===arguments.length&&(t=e,e=0),r=r||1;for(var n=[],s=e;s0?a=[a]:o.isObject(a)&&(a=Object.keys(a).map(function(e){return[e,a[e]]}))),!Array.isArray(a)||!a.length)return e.renderer.renderTemplates(this.elseTemplates,t);var c=r.offset||0,l=void 0===r.limit?a.length:r.limit;a=a.slice(c,c+l),this.reversed&&a.reverse();var f=a.map(function(e,t){var r={};return r[s.variable]=e,r.forloop={first:0===t,index:t+1,index0:t,last:t===a.length-1,length:a.length,rindex:a.length-t,rindex0:a.length-t-1},r}),p="";return i(f,function(r){return Promise.resolve().then(function(){return t.push(r)}).then(function(){return e.renderer.renderTemplates(s.templates,t)}).then(function(e){return p+=e}).catch(function(e){if(!(e instanceof u&&(p+=e.resolvedHTML,"continue"===e.message)))throw e}).then(function(){return t.pop()})}).catch(function(e){if(!(e instanceof u&&"break"===e.message))throw e}).then(function(){return p})}})}},{"..":2,"../src/util/assert.js":15,"../src/util/promise.js":18,"../src/util/underscore.js":20}],30:[function(e,t,r){"use strict";var n=e("..");t.exports=function(e){e.registerTag("if",{parse:function(t,r){var n=this;this.branches=[],this.elseTemplates=[];var s,i=e.parser.parseStream(r).on("start",function(){return n.branches.push({cond:t.args,templates:s=[]})}).on("tag:elsif",function(e){n.branches.push({cond:e.args,templates:s=[]})}).on("tag:else",function(){return s=n.elseTemplates}).on("tag:endif",function(e){return i.stop()}).on("template",function(e){return s.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")});i.start()},render:function(t,r){for(var s=0;s"),c+=''),c+='',t.push(r),e.renderer.renderTemplates(u.templates,t).then(function(e){return t.pop(r),c+=e,c+=""})}).then(function(){return i>0&&(c+=""),c})}})}},{"..":2,"../src/util/assert.js":15,"../src/util/promise.js":18}],37:[function(e,t,r){"use strict";var n=e("..");t.exports=function(e){e.registerTag("unless",{parse:function(t,r){var n=this;this.templates=[],this.elseTemplates=[];var s,i=e.parser.parseStream(r).on("start",function(e){s=n.templates,n.cond=t.args}).on("tag:else",function(){return s=n.elseTemplates}).on("tag:endunless",function(e){return i.stop()}).on("template",function(e){return s.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")});i.start()},render:function(t,r){var s=n.evalExp(this.cond,t);return n.isFalsy(s)?e.renderer.renderTemplates(this.templates,t):e.renderer.renderTemplates(this.elseTemplates,t)}})}},{"..":2}]},{},[2])(2)}); \ No newline at end of file +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Liquid=e()}}(function(){return function i(o,u,a){function c(t,e){if(!u[t]){if(!o[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(l)return l(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var s=u[t]={exports:{}};o[t][0].call(s.exports,function(e){return c(o[t][1][e]||e)},s,s.exports,i,o,u,a)}return u[t].exports}for(var l="function"==typeof require&&require,e=0;e":">",'"':""","'":"'"},u={"&":"&","<":"<",">":">",""":'"',"'":"'"},a={abs:function(e){return Math.abs(e)},append:function(e,t){return e+t},capitalize:function(e){return f(e).charAt(0).toUpperCase()+e.slice(1)},ceil:function(e){return Math.ceil(e)},concat:function(e,t){return Array.prototype.concat.call(e,t)},date:function(e,t){var r,n=e;return"now"===e?n=new Date:i.isString(e)&&(n=new Date(e)),(r=n)instanceof Date&&!isNaN(r.getTime())?s(n,t):e},default:function(e,t){return n(e)?e:t},divided_by:function(e,t){return e/t},downcase:function(e){return e.toLowerCase()},escape:c,escape_once:function(e){return c(f(e).replace(/&(amp|lt|gt|#34|#39);/g,function(e){return u[e]}))},first:function(e){return e[0]},floor:function(e){return Math.floor(e)},join:function(e,t){return e.join(t)},last:function(e){return i.last(e)},lstrip:function(e){return f(e).replace(/^\s+/,"")},map:function(e,t){return e.map(function(e){return e[t]})},minus:p(function(e,t){return e-t}),modulo:p(function(e,t){return e%t}),newline_to_br:function(e){return e.replace(/\n/g,"
")},plus:p(function(e,t){return Number(e)+Number(t)}),prepend:function(e,t){return t+e},remove:function(e,t){return e.split(t).join("")},remove_first:function(e,t){return e.replace(t,"")},replace:function(e,t,r){return f(e).split(t).join(r)},replace_first:function(e,t,r){return f(e).replace(t,r)},reverse:function(e){return e.reverse()},round:function(e,t){var r=Math.pow(10,t||0);return Math.round(e*r,t)/r},rstrip:function(e){return f(e).replace(/\s+$/,"")},size:function(e){return e.length},slice:function(e,t,r){return e.substr(t,void 0===r?1:r)},sort:function(e,t){return e.sort(t)},split:function(e,t){return f(e).split(t)},strip:function(e){return f(e).trim()},strip_html:function(e){return f(e).replace(/|||<.*?>/g,"")},strip_newlines:function(e){return f(e).replace(/\n/g,"")},times:function(e,t){return e*t},truncate:function(e,t,r){return r=void 0===r?"...":r,t=t||16,(e=f(e)).length<=t?e:e.substr(0,t-r.length)+r},truncatewords:function(e,t,r){void 0===r&&(r="...");var n=e.split(" "),s=n.slice(0,t).join(" ");return n.length>t&&(s+=r),s},uniq:function(e){var t={};return(e||[]).filter(function(e){return!t.hasOwnProperty(e)&&(t[e]=!0)})},upcase:function(e){return f(e).toUpperCase()},url_encode:encodeURIComponent};function c(e){return f(e).replace(/&|<|>|"|'/g,function(e){return o[e]})}function l(e){var t=(e+"").split(".");return 1=|<|>|\s+contains\s+/],quotedLine:E,numberLine:w,boolLine:b,rangeLine:T,literalLine:j,filterLine:_,tagLine:y,isLiteral:function(e){return j.test(e)},isVariable:function(e){return x.test(e)},parseLiteral:function(e){var t=e.match(w);if(t)return Number(e);if(t=e.match(b))return"true"===e.toLowerCase();if(t=e.match(E))return e.slice(1,-1);throw new TypeError("cannot parse '"+e+"' as literal")},isRange:function(e){return T.test(e)},matchValue:function(e){return d.exec(e)},isInteger:function(e){return S.test(e)}}},{}],8:[function(e,t,r){"use strict";t.exports=function(r){return{"==":function(e,t){return e===t},"!=":function(e,t){return e!==t},">":function(e,t){return null!==e&&null!==t&&t=":function(e,t){return null!==e&&null!==t&&t<=e},"<=":function(e,t){return null!==e&&null!==t&&e<=t},contains:function(e,t){return!!e&&("function"==typeof e.indexOf&&-1h&&g.push(v(h,t.index)),g.push(t[1]?d(t[1],t[2].trim(),t.index):(u=t[3],a=t[4].trim(),c=t.index,{type:"value",line:p.get(c),trim_left:"{{-"===u.slice(0,3),trim_right:"-}}"===u.slice(-3),raw:u,value:a,input:i,file:o}));return i.length>h&&g.push(v(h,i.length)),x(g,e),g;function d(e,t,r){var n=t.match(m.tagLine),s={type:"tag",indent:f,line:p.get(r),trim_left:"{%-"===e.slice(0,3),trim_right:"-%}"===e.slice(-3),raw:e,value:t,input:i,file:o};if(!n)throw new y("illegal tag syntax",s);return s.name=n[1],s.args=n[2],s}function v(e,t){var r=i.slice(e,t);return f=j.last(r.split("\n")).length,{type:"html",raw:r,value:r}}},r.whiteSpaceCtrl=x},{"./lexical.js":7,"./util/assert.js":15,"./util/error.js":16,"./util/underscore.js":20,"./whitespace-ctrl.js":22}],15:[function(e,t,r){"use strict";var n=e("./error.js").AssertionError;t.exports=function(e,t){if(!e)throw new n(t=t||"expect "+e+" to be true")}},{"./error.js":16}],16:[function(e,t,r){"use strict";var a=e("./underscore.js");function c(){this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}function n(e,t){c.call(this),this.input=t.input,this.line=t.line,this.file=t.file;var r,s,i,n,o,u=(r=t.input,s=t.line,i=r.split("\n"),n=Math.max(s-2,1),o=Math.min(s+3,i.length),a.range(n,o+1).map(function(e){return[e===s?">> ":" ",(t=e,r=o,n=t+"",Array((r+"").length-n.length).join(" ")+n),"| ",i[e-1]].join("");var t,r,n}).join("\n"));this.message=function(e,t){e=e||"",t.file&&(e+=", file:"+t.file);t.line&&(e+=", line:"+t.line);return e}(e.message,t),this.stack=u+"\n"+(this.stack||this.message)+(e.stack?"\nFrom "+e.stack:"")}function s(e,t){n.call(this,{message:e},t)}function i(e,t){a.assign(this,e),this.originalError=e,n.call(this,e,t)}function o(e,t){if(e instanceof o)return e;a.assign(this,e),this.originalError=e,n.call(this,e,t.token)}function u(e){c.call(this),this.message=e+""}function l(e){c.call(this),this.message=e+""}(s.prototype=Object.create(Error.prototype)).constructor=s,(i.prototype=Object.create(Error.prototype)).constructor=i,(o.prototype=Object.create(Error.prototype)).constructor=o,(u.prototype=Object.create(Error.prototype)).constructor=u,(l.prototype=Object.create(Error.prototype)).constructor=l,t.exports={TokenizationError:s,ParseError:i,RenderBreakError:u,AssertionError:l,RenderError:o}},{"./underscore.js":20}],17:[function(e,t,r){"use strict";var s=e("fs");t.exports={readFileAsync:function(e){return new Promise(function(r,n){s.readFile(e,"utf8",function(e,t){e?n(e):r(t)})})},statFileAsync:function(e){return new Promise(function(r,n){s.stat(e,function(e,t){return e?n(e):r(t)})})}}},{fs:3}],18:[function(e,t,r){"use strict";r.anySeries=function(n,s){var e=Promise.reject(new Error("init"));return n.forEach(function(t,r){e=e.catch(function(e){return s(t,r,n)})}),e},r.mapSeries=function(r,n){var s=Promise.resolve("init"),i=[];return r.forEach(function(e,t){s=s.then(function(){return n(e,t,r)}).then(function(e){return i.push(e)})}),s.then(function(){return i})}},{}],19:[function(e,t,r){"use strict";var n=["January","February","March","April","May","June","July","August","September","October","November","December"],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],u={1:"st",2:"nd",3:"rd",default:"th"},a={daysInMonth:function(e){return[31,a.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31]},getDayOfYear:function(e){for(var t=0,r=0;r"),o+=''),o+='',r.push(t),f.renderer.renderTemplates(i.templates,r).then(function(e){return r.pop(t),o+=e,o+=""})}).then(function(){return 0"),o})}})}},{"..":2,"../src/util/assert.js":15,"../src/util/promise.js":18}],37:[function(e,t,r){"use strict";var n=e("..");t.exports=function(i){i.registerTag("unless",{parse:function(t,e){var r,n=this;this.templates=[],this.elseTemplates=[];var s=i.parser.parseStream(e).on("start",function(e){r=n.templates,n.cond=t.args}).on("tag:else",function(){return r=n.elseTemplates}).on("tag:endunless",function(e){return s.stop()}).on("template",function(e){return r.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")});s.start()},render:function(e,t){var r=n.evalExp(this.cond,e);return n.isFalsy(r)?i.renderer.renderTemplates(this.templates,e):i.renderer.renderTemplates(this.elseTemplates,e)}})}},{"..":2}]},{},[2])(2)}); \ No newline at end of file diff --git a/package.json b/package.json index 0399faa47..7fc93174c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "liquidjs", - "version": "5.0.1", + "version": "5.0.2", "description": "Liquid template engine by pure JavaScript: compatible to shopify, easy to extend.", "main": "index.js", "scripts": {