Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

liquidjs

Package Overview
Dependencies
Maintainers
1
Versions
208
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

liquidjs - npm Package Compare versions

Comparing version 5.0.1 to 5.0.2

coverage/liquidjs/src/util/url.js.html

2

dist/liquid.min.js

@@ -1,1 +0,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<n.length;o++)s(n[o]);return s}({1:[function(e,t,r){"use strict";function n(e){return i(e).replace(/&|<|>|"|'/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={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&#34;","'":"&#39;"},p={"&amp;":"&","&lt;":"<","&gt;":">","&#34;":'"',"&#39;":"'"},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,"<br />")},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(/<script.*?<\/script>|<!--.*?-->|<style.*?<\/style>|<.*?>/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<e;i++)s.href=arguments[i],n=s.href,t.href=n;return r.removeChild(t),n}})},{}],6:[function(e,t,r){"use strict";var n=e("./lexical.js"),s=e("./syntax.js"),i=e("./util/assert.js"),o=e("./util/underscore.js"),u=new RegExp(""+n.value.source,"g");t.exports=function(e){e=o.assign({},e);var t={},r={render:function(e,t){var r=this.args.map(function(e){return s.evalValue(e,t)});return r.unshift(e),this.filter.apply(null,r)},parse:function(r){var s=n.filterLine.exec(r);i(s,"illegal filter: "+r);var o=s[1],a=s[2]||"",c=t[o];if("function"!=typeof c){if(e.strict_filters)throw new TypeError("undefined filter: "+o);return this.name=o,this.filter=function(e){return e},this.args=[],this}for(var l=[];s=u.exec(a.trim());){var f=s[0],p=new RegExp(f+"\\s*:","g").exec(s.input);p&&p.index===s.index?l.push("'"+f+"'"):l.push(f)}return this.name=o,this.filter=c,this.args=l,this}};return{construct:function(e){return Object.create(r).parse(e)},register:function(e,r){t[e]=r},clear:function(){t={}}}}},{"./lexical.js":7,"./syntax.js":12,"./util/assert.js":15,"./util/underscore.js":20}],7:[function(e,t,r){"use strict";var n=new RegExp(/'[^']*'/.source+"|"+/"[^"]*"/.source),s=new RegExp("(?:"+n.source+"|[^'\"])*"),i=/-?\d+/,o=/-?\d+\.?\d*|\.?\d+/,u=/true|false/,a=/[\w-]+/,c=new RegExp("\\[(?:"+n.source+"|[\\w-\\.]+)\\]"),l=new RegExp("(?:"+n.source+"|"+u.source+"|"+o.source+")"),f=new RegExp(a.source+"(?:\\."+a.source+"|"+c.source+")*"),p=new RegExp("(?:"+f.source+"|"+o.source+")"),h=new RegExp("\\("+p.source+"\\.\\."+p.source+"\\)"),g=new RegExp("\\(("+p.source+")\\.\\.("+p.source+")\\)"),d=new RegExp("(?:"+f.source+"|"+l.source+"|"+h.source+")"),v=new RegExp("(?:"+a.source+")\\s*:\\s*(?:"+d.source+")"),m=new RegExp("("+a.source+")\\s*:\\s*("+d.source+")","g"),y=new RegExp("^\\s*("+a.source+")\\s*([\\s\\S]*)\\s*$"),j=new RegExp("^"+l.source+"$","i"),x=new RegExp("^"+f.source+"$"),w=new RegExp("^"+o.source+"$"),b=new RegExp("^"+u.source+"$","i"),E=new RegExp("^"+n.source+"$"),T=new RegExp("^"+g.source+"$"),S=new RegExp("^"+i.source+"$"),k=new RegExp("(?:"+a.source+"\\s*:\\s*)?"+d.source),R=new RegExp(k.source+"(\\s*,\\s*"+k.source+")*"),O=new RegExp(a.source+"(?:\\s*:\\s*"+R.source+")?","g"),_=new RegExp("("+a.source+")(?:\\s*:\\s*("+R.source+"))?"),M=new RegExp("^"+_.source+"$");t.exports={quoted:n,number:o,bool:u,literal:l,filter:O,integer:i,hash:v,hashCapture:m,range:h,rangeCapture:g,identifier:a,value:d,quoteBalanced:s,operators:[/\s+or\s+/,/\s+and\s+/,/==|!=|<=|>=|<|>|\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<t},">=":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<s.length;i++){var o=s[i];if(!n.isObject(e))return;if(i===s.length-1)return e[o]=r;void 0===e[o]&&(e[o]={}),e=e[o]}}(this.findScopeFor(e),e,t),this},push:function(e){return i(e,"trying to push "+e+" into scopes"),this.scopes.push(e)},pop:function(){return this.scopes.pop()},findScopeFor:function(e){for(var t=this.scopes.length-1;t>=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;u<e.length;)switch(e[u]){case"[":t();var a=e[u+1];/['"]/.test(a)?(r=e.indexOf(a,u+2),i(-1!==r,"unbalanced "+a+": "+e),o=e.slice(u+2,r),t(),u=r+2):(r=function(e,t){for(var r=1,n=t;n<e.length;n++)if("["===e[n]&&r++,"]"===e[n]&&0==--r)return n;return-1}(e,u+1),i(-1!==r,"unbalanced []: "+e),o=e.slice(u+1,r),s.isInteger(o)||(o=this.get(o)),t(),u=r+1);break;case".":t(),u++;break;default:o+=e[u],u++}return t(),n}};r.factory=function(e,t){var r=Object.create(o);return r.opts=n.assign({dynamicPartials:!0,strict_variables:!1,strict_filters:!1,blocks:{},root:[]},t),r.scopes=[e||{}],r}},{"./lexical.js":7,"./util/assert.js":15,"./util/underscore.js":20}],12:[function(e,t,r){"use strict";function n(e,t){c(t,"unable to evalExp: scope undefined");for(var r,i=a.operators,o=0;o<i.length;o++){var l=i[o],f=new RegExp("^("+a.quoteBalanced.source+")("+l.source+")("+a.quoteBalanced.source+")$");if(r=e.match(f)){var p=n(r[1],t);return(0,u[r[2].trim()])(p,n(r[3],t))}}if(r=e.match(a.rangeLine)){for(var h=s(r[1],t),g=s(r[2],t),d=[],v=h;v<=g;v++)d.push(v);return d}return s(e,t)}function s(e,t){if(e=e&&e.trim()){if(a.isLiteral(e))return a.parseLiteral(e);if(a.isVariable(e))return t.get(e);throw new TypeError("cannot eval '"+e+"' as value")}}function i(e){return!o(e)}function o(e){return!1===e||void 0===e||null===e}var u=e("./operators.js")(i),a=e("./lexical.js"),c=e("../src/util/assert.js");t.exports={evalExp:n,evalValue:s,isTruthy:i,isFalsy:o}},{"../src/util/assert.js":15,"./lexical.js":7,"./operators.js":8}],13:[function(e,t,r){"use strict";var n=e("./lexical.js"),s=e("./syntax.js"),i=e("./util/assert.js");t.exports=function(){var e={},t={render:function(e){var t=function(e,t){var r,i={};for(n.hashCapture.lastIndex=0;r=n.hashCapture.exec(e);){var o=r[1],u=r[2];i[o]=s.evalValue(u,t)}return i}(this.token.args,e),r=this.tagImpl;return"function"!=typeof r.render?Promise.resolve(""):Promise.resolve().then(function(){return r.render(e,t)})},parse:function(t,r){this.type="tag",this.token=t,this.name=t.name;var n=e[this.name];i(n,"tag "+this.name+" not found"),this.tagImpl=Object.create(n),this.tagImpl.parse&&this.tagImpl.parse(t,r)}};return{construct:function(e,r){var n=Object.create(t);return n.parse(e,r),n},register:function(t,r){e[t]=r},clear:function(){e={}}}}},{"./lexical.js":7,"./syntax.js":12,"./util/assert.js":15}],14:[function(e,t,r){"use strict";var n=e("./lexical.js"),s=e("./util/error.js").TokenizationError,i=e("./util/underscore.js"),o=e("./whitespace-ctrl.js"),u=e("./util/assert.js");r.parse=function(e,t,r){function a(t,r){var n=e.slice(t,r);return f=i.last(n.split("\n")).length,{type:"html",raw:n,value:n}}u(i.isString(e),"illegal input");for(var c,l=/({%-?([\s\S]*?)-?%})|({{-?([\s\S]*?)-?}})/g,f=0,p=function(e){var t=0,r=-1;return{get:function(n){var s=e.slice(r+1,n).split("\n");return t+=s.length-1,r=n,t+1}}}(e),h=0,g=[];c=l.exec(e);h=l.lastIndex)c.index>h&&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;r<e.getMonth();++r)t+=a.daysInMonth(e)[r];return t+e.getDate()},getWeekOfYear:function(e,t){var r=this.getDayOfYear(e)+(t-e.getDay()),n=7-new Date(e.getFullYear(),0,1).getDay()+t;return c.pad(Math.floor((r-n)/7)+1,2)},isLeapYear:function(e){var t=e.getFullYear();return!(0!=(3&t)||!(t%100||t%400==0&&t))},getSuffix:function(e){var t=e.getDate().toString(),r=parseInt(t.slice(-1));return u[r]||u.default},century:function(e){return parseInt(e.getFullYear().toString().substring(0,2),10)}},c={pad:function(e,t,r){r||(r="0");for(var n=e.toString(),s=t-n.length;s-- >0;)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;s<t;s+=r)n.push(s);return n},r.last=function(e){return e[e.length-1]},r.forOwn=n,r.assign=function(e){return e=s(e)?e:{},Array.prototype.slice.call(arguments,1).forEach(function(t){!function(e,t){n(t,function(t,r){e[r]=t})}(e,t)}),e},r.uniq=function(e){for(var t={},r=[],n=0,s=e.length;n<s;++n)t.hasOwnProperty(e[n])||(r.push(e[n]),t[e[n]]=1);return r}},{}],21:[function(e,t,r){"use strict";var n=e("resolve-url"),s=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/,i=/^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/;r.extname=function(e){return s.exec(e).slice(1)[3]},r.valid=function(e){return i.test(e)},r.resolve=function(e,t){return"[object Array]"===Object.prototype.toString.call(e)&&(e=e[0]),e&&"/"!==e.charAt(e.length-1)&&(e+="/"),n(e,t)}},{"resolve-url":5}],22:[function(e,t,r){"use strict";var n=e("./util/underscore.js");t.exports=function(e,t){t=n.assign({greedy:!0},t);var r=!1;e.forEach(function(n,s){(function(e,t,r){return!t&&("tag"===e.type?e.trim_left||r.trim_tag_left:"value"===e.type?e.trim_left||r.trim_value_left:void 0)})(n,r,t)&&function(e,t){if(e&&"html"===e.type){var r=t?/\s+$/g:/[\t\r ]*$/g;e.value=e.value.replace(r,"")}}(e[s-1],t.greedy),"tag"===n.type&&"raw"===n.name&&(r=!0),"tag"===n.type&&"endraw"===n.name&&(r=!1),function(e,t,r){return!t&&("tag"===e.type?e.trim_right||r.trim_tag_right:"value"===e.type?e.trim_right||r.trim_value_right:void 0)}(n,r,t)&&function(e,t){if(e&&"html"===e.type){var r=t?/^\s+/g:/^[\t\r ]*\n?/g;e.value=e.value.replace(r,"")}}(e[s+1],t.greedy)})}},{"./util/underscore.js":20}],23:[function(e,t,r){"use strict";var n=e("..").lexical,s=new RegExp("("+n.identifier.source+")\\s*=(.*)"),i=e("../src/util/assert.js");t.exports=function(e){e.registerTag("assign",{parse:function(e){var t=e.args.match(s);i(t,"illegal token "+e.raw),this.key=t[1],this.value=t[2]},render:function(t){return t.set(this.key,e.evalValue(this.value,t)),Promise.resolve("")}})}},{"..":2,"../src/util/assert.js":15}],24:[function(e,t,r){"use strict";var n=e("..").lexical,s=new RegExp("("+n.identifier.source+")"),i=e("../src/util/assert.js");t.exports=function(e){e.registerTag("capture",{parse:function(t,r){var n=this,o=t.args.match(s);i(o,t.args+" not valid identifier"),this.variable=o[1],this.templates=[];var u=e.parser.parseStream(r);u.on("tag:endcapture",function(e){return u.stop()}).on("template",function(e){return n.templates.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")}),u.start()},render:function(t,r){var n=this;return e.renderer.renderTemplates(this.templates,t).then(function(e){t.set(n.variable,e)})}})}},{"..":2,"../src/util/assert.js":15}],25:[function(e,t,r){"use strict";var n=e("..");t.exports=function(e){e.registerTag("case",{parse:function(t,r){var n=this;this.cond=t.args,this.cases=[],this.elseTemplates=[];var s=[],i=e.parser.parseStream(r).on("tag:when",function(e){n.cases.push({val:e.args,templates:s=[]})}).on("tag:else",function(){return s=n.elseTemplates}).on("tag:endcase",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<this.cases.length;s++){var i=this.cases[s];if(n.evalExp(i.val,t)===n.evalExp(this.cond,t))return e.renderer.renderTemplates(i.templates,t)}return e.renderer.renderTemplates(this.elseTemplates,t)}})}},{"..":2}],26:[function(e,t,r){"use strict";t.exports=function(e){e.registerTag("comment",{parse:function(t,r){var n=e.parser.parseStream(r);n.on("token",function(e){"endcomment"===e.name&&n.stop()}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")}),n.start()}})}},{}],27:[function(e,t,r){"use strict";var n=e(".."),s=n.lexical,i=new RegExp("^(?:("+s.value.source+")\\s*:\\s*)?(.*)$"),o=new RegExp(s.value.source,"g"),u=e("../src/util/assert.js");t.exports=function(e){e.registerTag("cycle",{parse:function(e,t){var r=i.exec(e.args);u(r,"illegal tag: "+e.raw),this.group=r[1]||"";var n=r[2];for(this.candidates=[];r=o.exec(n);)this.candidates.push(r[0]);u(this.candidates.length,"empty candidates: "+e.raw)},render:function(e,t){var r="cycle:"+n.evalValue(this.group,e)+":"+this.candidates.join(","),s=e.opts.groups=e.opts.groups||{},i=s[r];void 0===i&&(i=s[r]=0);var o=this.candidates[i];return i=(i+1)%this.candidates.length,s[r]=i,Promise.resolve(n.evalValue(o,e))}})}},{"..":2,"../src/util/assert.js":15}],28:[function(e,t,r){"use strict";var n=e("..").lexical,s=e("../src/util/assert.js");t.exports=function(e){e.registerTag("decrement",{parse:function(e){var t=e.args.match(n.identifier);s(t,"illegal identifier "+e.args),this.variable=t[0]},render:function(e,t){var r=e.get(this.variable);"number"!=typeof r&&(r=0),e.set(this.variable,r-1)}})}},{"..":2,"../src/util/assert.js":15}],29:[function(e,t,r){"use strict";var n=e(".."),s=n.lexical,i=e("../src/util/promise.js").mapSeries,o=e("../src/util/underscore.js"),u=n.Types.RenderBreakError,a=e("../src/util/assert.js"),c=new RegExp("^("+s.identifier.source+")\\s+in\\s+("+s.value.source+")(?:\\s+"+s.hash.source+")*(?:\\s+(reversed))?(?:\\s+"+s.hash.source+")*$");t.exports=function(e){e.registerTag("for",{parse:function(t,r){var n=this,s=c.exec(t.args);a(s,"illegal tag: "+t.raw),this.variable=s[1],this.collection=s[2],this.reversed=!!s[3],this.templates=[],this.elseTemplates=[];var i,o=e.parser.parseStream(r).on("start",function(){return i=n.templates}).on("tag:else",function(){return i=n.elseTemplates}).on("tag:endfor",function(){return o.stop()}).on("template",function(e){return i.push(e)}).on("end",function(){throw new Error("tag "+t.raw+" not closed")});o.start()},render:function(t,r){var s=this,a=n.evalExp(this.collection,t);if(Array.isArray(a)||(o.isString(a)&&a.length>0?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<this.branches.length;s++){var i=this.branches[s],o=n.evalExp(i.cond,t);if(n.isTruthy(o))return e.renderer.renderTemplates(i.templates,t)}return e.renderer.renderTemplates(this.elseTemplates,t)}})}},{"..":2}],31:[function(e,t,r){"use strict";var n=e(".."),s=n.lexical,i=new RegExp("with\\s+("+s.value.source+")"),o=/[^\s,]+/,u=e("../src/util/assert.js");t.exports=function(e){e.registerTag("include",{parse:function(e){var t=o.exec(e.args);t&&(this.staticValue=t[0]),(t=s.value.exec(e.args))&&(this.value=t[0]),(t=i.exec(e.args))&&(this.with=t[1])},render:function(t,r){var s=t.opts.dynamicPartials?n.evalValue(this.value,t):this.staticValue;u(s,"cannot include with empty filename");var i=t.opts.blocks,o=t.opts.blockMode;return t.opts.blocks={},t.opts.blockMode="output",this.with&&(r[s]=n.evalValue(this.with,t)),e.getTemplate(s,t.opts.root).then(function(n){return t.push(r),e.renderer.renderTemplates(n,t)}).then(function(e){return t.pop(),t.opts.blocks=i,t.opts.blockMode=o,e})}})}},{"..":2,"../src/util/assert.js":15}],32:[function(e,t,r){"use strict";var n=e(".."),s=e("../src/util/assert.js"),i=n.lexical;t.exports=function(e){e.registerTag("increment",{parse:function(e){var t=e.args.match(i.identifier);s(t,"illegal identifier "+e.args),this.variable=t[0]},render:function(e,t){var r=e.get(this.variable);"number"!=typeof r&&(r=0),e.set(this.variable,r+1)}})}},{"..":2,"../src/util/assert.js":15}],33:[function(e,t,r){"use strict";t.exports=function(t){e("./assign.js")(t),e("./capture.js")(t),e("./case.js")(t),e("./comment.js")(t),e("./cycle.js")(t),e("./decrement.js")(t),e("./for.js")(t),e("./if.js")(t),e("./include.js")(t),e("./increment.js")(t),e("./layout.js")(t),e("./raw.js")(t),e("./tablerow.js")(t),e("./unless.js")(t)}},{"./assign.js":23,"./capture.js":24,"./case.js":25,"./comment.js":26,"./cycle.js":27,"./decrement.js":28,"./for.js":29,"./if.js":30,"./include.js":31,"./increment.js":32,"./layout.js":34,"./raw.js":35,"./tablerow.js":36,"./unless.js":37}],34:[function(e,t,r){"use strict";var n=e(".."),s=n.lexical,i=e("../src/util/assert.js"),o=/\S+/;t.exports=function(e){e.registerTag("layout",{parse:function(t,r){var n=o.exec(t.args);n&&(this.staticLayout=n[0]),(n=s.value.exec(t.args))&&(this.layout=n[0]),this.tpls=e.parser.parse(r)},render:function(t,r){var s=t.opts.dynamicPartials?n.evalValue(this.layout,t):this.staticLayout;return i(s,"cannot apply layout with empty filename"),t.opts.blockMode="store",e.renderer.renderTemplates(this.tpls,t).then(function(r){return void 0===t.opts.blocks[""]&&(t.opts.blocks[""]=r),e.getTemplate(s,t.opts.root)}).then(function(n){return t.push(r),t.opts.blockMode="output",e.renderer.renderTemplates(n,t)}).then(function(e){return t.pop(),e})}}),e.registerTag("block",{parse:function(t,r){var n=this,s=/\w+/.exec(t.args);this.block=s?s[0]:"",this.tpls=[];var i=e.parser.parseStream(r).on("tag:endblock",function(){return i.stop()}).on("template",function(e){return n.tpls.push(e)}).on("end",function(){throw new Error("tag "+t.raw+" not closed")});i.start()},render:function(t){var r=this;return Promise.resolve(t.opts.blocks[this.block]).then(function(n){return void 0===n?e.renderer.renderTemplates(r.tpls,t):n}).then(function(e){return"store"===t.opts.blockMode?(t.opts.blocks[r.block]=e,""):e})}})}},{"..":2,"../src/util/assert.js":15}],35:[function(e,t,r){"use strict";t.exports=function(e){e.registerTag("raw",{parse:function(t,r){var n=this;this.tokens=[];var s=e.parser.parseStream(r);s.on("token",function(e){"endraw"===e.name?s.stop():n.tokens.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")}),s.start()},render:function(e,t){var r=this.tokens.map(function(e){return e.raw}).join("");return Promise.resolve(r)}})}},{}],36:[function(e,t,r){"use strict";var n=e(".."),s=e("../src/util/promise.js").mapSeries,i=n.lexical,o=e("../src/util/assert.js"),u=new RegExp("^("+i.identifier.source+")\\s+in\\s+("+i.value.source+")(?:\\s+"+i.hash.source+")*$");t.exports=function(e){e.registerTag("tablerow",{parse:function(t,r){var n=this,s=u.exec(t.args);o(s,"illegal tag: "+t.raw),this.variable=s[1],this.collection=s[2],this.templates=[];var i,a=e.parser.parseStream(r).on("start",function(){return i=n.templates}).on("tag:endtablerow",function(e){return a.stop()}).on("template",function(e){return i.push(e)}).on("end",function(){throw new Error("tag "+t.raw+" not closed")});a.start()},render:function(t,r){var i,o,u=this,a=n.evalExp(this.collection,t)||[],c="",l=r.offset||0,f=void 0===r.limit?a.length:r.limit,p=r.cols;a=a.slice(l,l+f),p||(p=a.length);var h=[];return a.some(function(e,t){var r={};r[u.variable]=e,h.push(r)}),s(h,function(r,n){return i=Math.floor(n/p)+1,1===(o=n%p+1)&&(1!==i&&(c+="</tr>"),c+='<tr class="row'+i+'">'),c+='<td class="col'+o+'">',t.push(r),e.renderer.renderTemplates(u.templates,t).then(function(e){return t.pop(r),c+=e,c+="</td>"})}).then(function(){return i>0&&(c+="</tr>"),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)});
!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<a.length;e++)c(a[e]);return c}({1:[function(e,t,r){"use strict";var s=e("./src/util/strftime.js"),i=e("./src/util/underscore.js"),n=e("./src/syntax.js").isTruthy,o={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&#34;","'":"&#39;"},u={"&amp;":"&","&lt;":"<","&gt;":">","&#34;":'"',"&#39;":"'"},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,"<br />")},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(/<script.*?<\/script>|<!--.*?-->|<style.*?<\/style>|<.*?>/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<t.length?t[1].length:0}function f(e){return e+""}function p(i){return function(e,t){var r,n,s=(r=e,n=t,Math.max(l(r),l(n)));return i(e,t).toFixed(s)}}function h(r){return i.forOwn(a,function(e,t){return r.registerFilter(t,e)})}h.filters=a,t.exports=h},{"./src/syntax.js":12,"./src/util/strftime.js":19,"./src/util/underscore.js":20}],2:[function(e,t,r){"use strict";var s=e("./src/scope"),i=e("./src/util/underscore.js"),o=e("./src/util/assert.js"),n=e("./src/tokenizer.js"),u=e("./src/util/fs.js").statFileAsync,a=e("./src/util/fs.js").readFileAsync,c=e("path"),l=e("./src/util/url.js"),f=e("./src/render.js"),p=e("./src/lexical.js"),h=e("./src/tag.js"),g=e("./src/filter.js"),d=e("./src/parser"),v=e("./src/syntax.js"),m=e("./tags"),y=e("./filters"),j=e("./src/util/promise.js").anySeries,x=e("./src/util/error.js"),w={init:function(e,t,r){return r.cache&&(this.cache={}),this.options=r,this.tag=e,this.filter=t,this.parser=d(e,t),this.renderer=f(),m(this),y(this),this},parse:function(e,t){var r=n.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(t,r){r=this.options.root.concat(r||[]);var e=(r=i.uniq(r)).map(function(e){return c.resolve(e,t)});return j(e,function(e){return u(e).then(function(){return e})}).catch(function(e){throw e.message=e.code+": Failed to lookup "+t+" in: "+r,e})},getTemplate:function(e,t){return"undefined"==typeof XMLHttpRequest?this.getTemplateFromFile(e,t):this.getTemplateFromUrl(e,t)},getTemplateFromFile:function(e,t){var r=this;return c.extname(e)||(e+=this.options.extname),this.lookup(e,t).then(function(t){if(r.options.cache){var e=r.cache[t];return e?Promise.resolve(e):a(t).then(function(e){return r.parse(e)}).then(function(e){return r.cache[t]=e})}return a(t).then(function(e){return r.parse(e,t)})})},getTemplateFromUrl:function(s,e){var i,o=this;if(l.valid(s)?i=s:(l.extname(s)||(s+=this.options.extname),i=l.resolve(e||this.options.root,s)),this.options.cache){var t=this.cache[s];if(t)return Promise.resolve(t)}return new Promise(function(t,r){var n=new XMLHttpRequest;n.onload=function(){if(200<=n.status&&n.status<300){var e=o.parse(n.responseText);o.options.cache&&(o.cache[s]=e),t(e)}else r(new Error(n.statusText))},n.onerror=function(){r(new Error("An error occurred whilst sending the response."))},n.open("GET",i),n.send()})},express:function(n){n=n||{};var s=this;return function(e,t,r){o(Array.isArray(this.root)||i.isString(this.root),"illegal views root, are you using express.js?"),n.root=this.root,s.renderFile(e,t,n).then(function(e){return r(null,e)}).catch(function(e){return r(e)})}}};function b(e){var t;(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=(t=e.root,Array.isArray(t)?t:i.isString(t)?[t]:[]);var r=Object.create(w);return r.init(h(),g(e),e),r}b.lexical=p,b.isTruthy=v.isTruthy,b.isFalsy=v.isFalsy,b.evalExp=v.evalExp,b.evalValue=v.evalValue,b.Types={ParseError:x.ParseError,TokenizationEroor:x.TokenizationError,RenderBreakError:x.RenderBreakError,AssertionError:x.AssertionError},t.exports=b},{"./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){},{}],4:[function(e,t,r){},{}],5:[function(e,t,r){"use strict";var n,s,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};s=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<e;i++)s.href=arguments[i],n=s.href,t.href=n;return r.removeChild(t),n}},"object"===((n=void 0)===r?"undefined":i(r))?t.exports=s():n.resolveUrl=s()},{}],6:[function(e,t,r){"use strict";var l=e("./lexical.js"),n=e("./syntax.js"),f=e("./util/assert.js"),s=e("./util/underscore.js"),p=new RegExp(""+l.value.source,"g");t.exports=function(a){a=s.assign({},a);var c={},t={render:function(e,t){var r=this.args.map(function(e){return n.evalValue(e,t)});return r.unshift(e),this.filter.apply(null,r)},parse:function(e){var t=l.filterLine.exec(e);f(t,"illegal filter: "+e);var r=t[1],n=t[2]||"",s=c[r];if("function"!=typeof s){if(a.strict_filters)throw new TypeError("undefined filter: "+r);return this.name=r,this.filter=function(e){return e},this.args=[],this}for(var i=[];t=p.exec(n.trim());){var o=t[0],u=new RegExp(o+"\\s*:","g").exec(t.input);u&&u.index===t.index?i.push("'"+o+"'"):i.push(o)}return this.name=r,this.filter=s,this.args=i,this}};return{construct:function(e){return Object.create(t).parse(e)},register:function(e,t){c[e]=t},clear:function(){c={}}}}},{"./lexical.js":7,"./syntax.js":12,"./util/assert.js":15,"./util/underscore.js":20}],7:[function(e,t,r){"use strict";var n=new RegExp(/'[^']*'/.source+"|"+/"[^"]*"/.source),s=new RegExp("(?:"+n.source+"|[^'\"])*"),i=/-?\d+/,o=/-?\d+\.?\d*|\.?\d+/,u=/true|false/,a=/[\w-]+[?]?/,c=new RegExp("\\[(?:"+n.source+"|[\\w-\\.]+)\\]"),l=new RegExp("(?:"+n.source+"|"+u.source+"|"+o.source+")"),f=new RegExp(a.source+"(?:\\."+a.source+"|"+c.source+")*"),p=new RegExp("(?:"+f.source+"|"+o.source+")"),h=new RegExp("\\("+p.source+"\\.\\."+p.source+"\\)"),g=new RegExp("\\(("+p.source+")\\.\\.("+p.source+")\\)"),d=new RegExp("(?:"+f.source+"|"+l.source+"|"+h.source+")"),v=new RegExp("(?:"+a.source+")\\s*:\\s*(?:"+d.source+")"),m=new RegExp("("+a.source+")\\s*:\\s*("+d.source+")","g"),y=new RegExp("^\\s*("+a.source+")\\s*([\\s\\S]*)\\s*$"),j=new RegExp("^"+l.source+"$","i"),x=new RegExp("^"+f.source+"$"),w=new RegExp("^"+o.source+"$"),b=new RegExp("^"+u.source+"$","i"),E=new RegExp("^"+n.source+"$"),T=new RegExp("^"+g.source+"$"),S=new RegExp("^"+i.source+"$"),k=new RegExp("(?:"+a.source+"\\s*:\\s*)?"+d.source),O=new RegExp(k.source+"(\\s*,\\s*"+k.source+")*"),R=new RegExp(a.source+"(?:\\s*:\\s*"+O.source+")?","g"),A=new RegExp("("+a.source+")(?:\\s*:\\s*("+O.source+"))?"),_=new RegExp("^"+A.source+"$");t.exports={quoted:n,number:o,bool:u,literal:l,filter:R,integer:i,hash:v,hashCapture:m,range:h,rangeCapture:g,identifier:a,value:d,quoteBalanced:s,operators:[/\s+or\s+/,/\s+and\s+/,/==|!=|<=|>=|<|>|\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<e},"<":function(e,t){return null!==e&&null!==t&&e<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&&-1<e.indexOf(t))},and:function(e,t){return r(e)&&r(t)},or:function(e,t){return r(e)||r(t)}}}},{}],9:[function(e,t,r){"use strict";var u=e("./lexical.js"),a=e("./util/error.js").ParseError,c=e("./util/assert.js");t.exports=function(r,s){var t={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(){var e;for(this.trigger("start");!this.stopRequested&&(e=this.tokens.shift());)if(!(this.trigger("token",e)||"tag"===e.type&&this.trigger("tag:"+e.name,e))){var t=n(e,this.tokens);this.trigger("template",t)}return this.stopRequested||this.trigger("end"),this},stop:function(){return this.stopRequested=!0,this}};function n(t,e){try{var r=null;return(r="tag"===t.type?i(t,e):"value"===t.type?o(t.value):t).token=t,r}catch(e){throw new a(e,t)}}function i(e,t){return"continue"===e.name||"break"===e.name?e:r.construct(e,t)}function o(e){var t=u.matchValue(e);c(t,"illegal value string: "+e);var r=t[0];e=e.substr(t.index+t[0].length);for(var n=[];t=u.filter.exec(e);)n.push([t[0].trim()]);return{type:"value",initial:r,filters:n.map(function(e){return s.construct(e)})}}return{parse:function(e){for(var t,r=[];t=e.shift();)r.push(n(t,e));return r},parseTag:i,parseStream:function(e){return Object.create(t).init(e)},parseValue:o}}},{"./lexical.js":7,"./util/assert.js":15,"./util/error.js":16}],10:[function(e,t,r){"use strict";var n=e("./syntax.js"),i=e("./util/promise.js").mapSeries,o=e("./util/error.js").RenderBreakError,u=e("./util/error.js").RenderError,a=e("./util/assert.js"),s={renderTemplates:function(e,r){var n=this;a(r,"unable to evalTemplates: scope undefined");var s="";return i(e,function(t){return function(e){var t=this;return"tag"===e.type?this.renderTag(e,r).then(function(e){return void 0===e?"":e}):"value"===e.type?Promise.resolve().then(function(){return t.evalValue(e,r)}).then(function(e){return void 0===e?"":"string"==typeof(t=e)?t:JSON.stringify(t);var t}):Promise.resolve(e.value)}.call(n,t).then(function(e){return s+=e}).catch(function(e){if(e instanceof o)throw e.resolvedHTML=s,e;throw new u(e,t)})}).then(function(){return s})},renderTag:function(e,t){return"continue"===e.name?Promise.reject(new o("continue")):"break"===e.name?Promise.reject(new o("break")):e.render(t)},evalValue:function(e,r){return a(r,"unable to evalValue: scope undefined"),e.filters.reduce(function(e,t){return t.render(e,r)},n.evalExp(e.initial,r))}};t.exports=function(){return Object.create(s)}},{"./syntax.js":12,"./util/assert.js":15,"./util/error.js":16,"./util/promise.js":18}],11:[function(e,t,r){"use strict";var i=e("./util/underscore.js"),u=e("./lexical.js"),a=e("./util/assert.js"),n={getAll:function(){return this.contexts.reduce(function(e,t){return Object.assign(e,t)},Object.create(null))},get:function(e){var r=this,t=this.propertyAccessSeq(e),n=this.findContextFor(t[0])||i.last(this.contexts);return t.reduce(function(e,t){return r.readProperty(e,t)},n)},set:function(e,r){var n=this.propertyAccessSeq(e),s=this.findContextFor(n[0])||i.last(this.contexts);n.some(function(e,t){return!i.isObject(s)||(t===n.length-1?(s[e]=r,!0):(void 0===s[e]&&(s[e]={}),void(s=s[e])))})},unshift:function(e){return this.contexts.unshift(e)},push:function(e){return this.contexts.push(e)},pop:function(t){if(!arguments.length)return this.contexts.pop();var e=this.contexts.findIndex(function(e){return e===t});if(-1===e)throw new TypeError("scope not found, cannot pop");return this.contexts.splice(e,1)[0]},findContextFor:function(e,t){t=t||function(){return!0};for(var r=this.contexts.length-1;0<=r;r--){var n=this.contexts[r];if(t(n)&&e in n)return n}return null},readProperty:function(e,t){var r=void 0;if(r="size"===t&&(i.isArray(e)||i.isString(e))?e.length:i.isNil(e)?void 0:e[t],i.isNil(r)&&this.opts.strict_variables)throw new TypeError("undefined variable: "+t);return r},propertyAccessSeq:function(e){e=String(e);for(var t=[],r="",n=void 0,s=0;s<e.length;)switch(e[s]){case"[":o();var i=e[s+1];/['"]/.test(i)?(n=e.indexOf(i,s+2),a(-1!==n,"unbalanced "+i+": "+e),r=e.slice(s+2,n),o(),s=n+2):(n=c(e,s+1),a(-1!==n,"unbalanced []: "+e),r=e.slice(s+1,n),u.isInteger(r)||(r=this.get(r)),o(),s=n+1);break;case".":o(),s++;break;default:r+=e[s],s++}if(o(),!t.length)throw new TypeError('invalid path:"'+e+'"');return t;function o(){r.length&&t.push(r),r=""}}};function c(e,t){for(var r=1,n=t;n<e.length;n++)if("["===e[n]&&r++,"]"===e[n]&&0===--r)return n;return-1}r.factory=function(e,t){var r=Object.create(n);return r.opts=i.assign({dynamicPartials:!0,strict_variables:!1,strict_filters:!1,blocks:{},root:[]},t),r.contexts=[e||{}],r},r.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(e,t,r){"use strict";var h=e("./operators.js")(n),g=e("./lexical.js"),d=e("../src/util/assert.js");function v(e,t){if(e=e&&e.trim()){if(g.isLiteral(e))return g.parseLiteral(e);if(g.isVariable(e))return t.get(e);throw new TypeError("cannot eval '"+e+"' as value")}}function n(e){return!s(e)}function s(e){return!1===e||null==e}t.exports={evalExp:function e(t,r){d(r,"unable to evalExp: scope undefined");for(var n,s=g.operators,i=0;i<s.length;i++){var o=s[i],u=new RegExp("^("+g.quoteBalanced.source+")("+o.source+")("+g.quoteBalanced.source+")$");if(n=t.match(u)){var a=e(n[1],r);return(0,h[n[2].trim()])(a,e(n[3],r))}}if(n=t.match(g.rangeLine)){for(var c=v(n[1],r),l=v(n[2],r),f=[],p=c;p<=l;p++)f.push(p);return f}return v(t,r)},evalValue:v,isTruthy:n,isFalsy:s}},{"../src/util/assert.js":15,"./lexical.js":7,"./operators.js":8}],13:[function(e,t,r){"use strict";var o=e("./lexical.js"),u=e("./syntax.js"),i=e("./util/assert.js");t.exports=function(){var n={},s={render:function(e){var t=function(e,t){var r={},n=void 0;for(o.hashCapture.lastIndex=0;n=o.hashCapture.exec(e);){var s=n[1],i=n[2];r[s]=u.evalValue(i,t)}return r}(this.token.args,e),r=this.tagImpl;return"function"!=typeof r.render?Promise.resolve(""):Promise.resolve().then(function(){return r.render(e,t)})},parse:function(e,t){this.type="tag",this.token=e,this.name=e.name;var r=n[this.name];i(r,"tag "+this.name+" not found"),this.tagImpl=Object.create(r),this.tagImpl.parse&&this.tagImpl.parse(e,t)}};return{construct:function(e,t){var r=Object.create(s);return r.parse(e,t),r},register:function(e,t){n[e]=t},clear:function(){n={}}}}},{"./lexical.js":7,"./syntax.js":12,"./util/assert.js":15}],14:[function(e,t,r){"use strict";var m=e("./lexical.js"),y=e("./util/error.js").TokenizationError,j=e("./util/underscore.js"),x=e("./whitespace-ctrl.js"),w=e("./util/assert.js");r.parse=function(i,o,e){w(j.isString(i),"illegal input");for(var r,n,s,t,u,a,c,l=/({%-?([\s\S]*?)-?%})|({{-?([\s\S]*?)-?}})/g,f=0,p=(r=i,n=0,s=-1,{get:function(e){var t=r.slice(s+1,e).split("\n");return n+=t.length-1,s=e,n+1}}),h=0,g=[];t=l.exec(i);h=l.lastIndex)t.index>h&&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<e.getMonth();++r)t+=a.daysInMonth(e)[r];return t+e.getDate()},getWeekOfYear:function(e,t){var r=this.getDayOfYear(e)+(t-e.getDay()),n=7-new Date(e.getFullYear(),0,1).getDay()+t;return c.pad(Math.floor((r-n)/7)+1,2)},isLeapYear:function(e){var t=e.getFullYear();return!(0!=(3&t)||!(t%100||t%400==0&&t))},getSuffix:function(e){var t=e.getDate().toString(),r=parseInt(t.slice(-1));return u[r]||u.default},century:function(e){return parseInt(e.getFullYear().toString().substring(0,2),10)}},c={pad:function(e,t,r){r||(r="0");for(var n=e.toString(),s=t-n.length;0<s--;)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(0<t?"-":"+")+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";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},s=Object.prototype.toString;function i(e){var t=void 0===e?"undefined":n(e);return null!=e&&("object"===t||"function"===t)}r.isString=function(e){return e instanceof String||"string"==typeof e},r.isObject=i,r.isArray=function(e){return"[object Array]"===s.call(e)},r.isNil=function(e){return null==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;s<t;s+=r)n.push(s);return n},r.last=function(e){return e[e.length-1]},r.forOwn=function(e,t){for(var r in e=e||{})if(e.hasOwnProperty(r)&&!1===t(e[r],r,e))break;return e},r.assign=function(t){return t=i(t)?t:{},Array.prototype.slice.call(arguments,1).forEach(function(e){return Object.assign(t,e)}),t},r.uniq=function(e){for(var t={},r=[],n=0,s=e.length;n<s;++n)t.hasOwnProperty(e[n])||(r.push(e[n]),t[e[n]]=1);return r}},{}],21:[function(e,t,r){"use strict";var n=e("resolve-url"),s=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/,i=/^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/,o=e("./underscore");r.extname=function(e){return s.exec(e).slice(1)[3]},r.valid=function(e){return i.test(e)},r.resolve=function(e,t){return"[object Array]"===Object.prototype.toString.call(e)&&(e=e[0]),e&&"/"!==o.last(e)&&(e+="/"),n(e,t)}},{"./underscore":20,"resolve-url":5}],22:[function(e,t,r){"use strict";var n=e("./util/underscore.js");t.exports=function(o,u){u=n.assign({greedy:!0},u);var a=!1;o.forEach(function(e,t){var r,n,s,i;s=e,i=u,!a&&("tag"===s.type?s.trim_left||i.trim_tag_left:"value"===s.type?s.trim_left||i.trim_value_left:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/\s+$/g:/[\t\r ]*$/g;e.value=e.value.replace(r,"")}}(o[t-1],u.greedy),"tag"===e.type&&"raw"===e.name&&(a=!0),"tag"===e.type&&"endraw"===e.name&&(a=!1),r=e,n=u,!a&&("tag"===r.type?r.trim_right||n.trim_tag_right:"value"===r.type?r.trim_right||n.trim_value_right:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/^\s+/g:/^[\t\r ]*\n?/g;e.value=e.value.replace(r,"")}}(o[t+1],u.greedy)})}},{"./util/underscore.js":20}],23:[function(e,t,r){"use strict";var n=e("..").lexical,s=new RegExp("("+n.identifier.source+")\\s*=(.*)"),i=e("../src/util/assert.js"),o=e("../src/scope").types;t.exports=function(r){r.registerTag("assign",{parse:function(e){var t=e.args.match(s);i(t,"illegal token "+e.raw),this.key=t[1],this.value=t[2]},render:function(e){var t=Object.create(o.AssignScope);return t[this.key]=r.evalValue(this.value,e),e.push(t),Promise.resolve("")}})}},{"..":2,"../src/scope":11,"../src/util/assert.js":15}],24:[function(e,t,r){"use strict";var n=e("..").lexical,o=new RegExp("("+n.identifier.source+")"),u=e("../src/util/assert.js"),s=e("../src/scope.js").types;t.exports=function(i){i.registerTag("capture",{parse:function(t,e){var r=this,n=t.args.match(o);u(n,t.args+" not valid identifier"),this.variable=n[1],this.templates=[];var s=i.parser.parseStream(e);s.on("tag:endcapture",function(e){return s.stop()}).on("template",function(e){return r.templates.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")}),s.start()},render:function(r,e){var n=this;return i.renderer.renderTemplates(this.templates,r).then(function(e){var t=Object.create(s.CaptureScope);t[n.variable]=e,r.push(t)})}})}},{"..":2,"../src/scope.js":11,"../src/util/assert.js":15}],25:[function(e,t,r){"use strict";var s=e("..");t.exports=function(i){i.registerTag("case",{parse:function(t,e){var r=this;this.cond=t.args,this.cases=[],this.elseTemplates=[];var n=[],s=i.parser.parseStream(e).on("tag:when",function(e){r.cases.push({val:e.args,templates:n=[]})}).on("tag:else",function(){return n=r.elseTemplates}).on("tag:endcase",function(e){return s.stop()}).on("template",function(e){return n.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")});s.start()},render:function(e,t){for(var r=0;r<this.cases.length;r++){var n=this.cases[r];if(s.evalExp(n.val,e)===s.evalExp(this.cond,e))return i.renderer.renderTemplates(n.templates,e)}return i.renderer.renderTemplates(this.elseTemplates,e)}})}},{"..":2}],26:[function(e,t,r){"use strict";t.exports=function(n){n.registerTag("comment",{parse:function(t,e){var r=n.parser.parseStream(e);r.on("token",function(e){"endcomment"===e.name&&r.stop()}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")}),r.start()}})}},{}],27:[function(e,t,r){"use strict";var o=e(".."),n=o.lexical,s=new RegExp("^(?:("+n.value.source+")\\s*:\\s*)?(.*)$"),i=new RegExp(n.value.source,"g"),u=e("../src/util/assert.js");t.exports=function(e){e.registerTag("cycle",{parse:function(e,t){var r=s.exec(e.args);u(r,"illegal tag: "+e.raw),this.group=r[1]||"";var n=r[2];for(this.candidates=[];r=i.exec(n);)this.candidates.push(r[0]);u(this.candidates.length,"empty candidates: "+e.raw)},render:function(e,t){var r="cycle:"+o.evalValue(this.group,e)+":"+this.candidates.join(","),n=e.opts.groups=e.opts.groups||{},s=n[r];void 0===s&&(s=n[r]=0);var i=this.candidates[s];return s=(s+1)%this.candidates.length,n[r]=s,Promise.resolve(o.evalValue(i,e))}})}},{"..":2,"../src/util/assert.js":15}],28:[function(e,t,r){"use strict";var n=e("..").lexical,s=e("../src/util/assert.js"),i=e("../src/scope").types;t.exports=function(e){e.registerTag("decrement",{parse:function(e){var t=e.args.match(n.identifier);s(t,"illegal identifier "+e.args),this.variable=t[0]},render:function(e,t){var r=e.findContextFor(this.variable,function(e){return Object.getPrototypeOf(e)!==i.CaptureScope&&Object.getPrototypeOf(e)!==i.AssignScope});return r||(r=Object.create(i.DecrementScope),e.unshift(r)),"number"!=typeof r[this.variable]&&(r[this.variable]=0),--r[this.variable]}})}},{"..":2,"../src/scope":11,"../src/util/assert.js":15}],29:[function(e,t,r){"use strict";var c=e(".."),n=c.lexical,l=e("../src/util/promise.js").mapSeries,f=e("../src/util/underscore.js"),p=c.Types.RenderBreakError,o=e("../src/util/assert.js"),u=new RegExp("^("+n.identifier.source+")\\s+in\\s+("+n.value.source+")(?:\\s+"+n.hash.source+")*(?:\\s+(reversed))?(?:\\s+"+n.hash.source+")*$");t.exports=function(a){a.registerTag("for",{parse:function(e,t){var r,n=this,s=u.exec(e.args);o(s,"illegal tag: "+e.raw),this.variable=s[1],this.collection=s[2],this.reversed=!!s[3],this.templates=[],this.elseTemplates=[];var i=a.parser.parseStream(t).on("start",function(){return r=n.templates}).on("tag:else",function(){return r=n.elseTemplates}).on("tag:endfor",function(){return i.stop()}).on("template",function(e){return r.push(e)}).on("end",function(){throw new Error("tag "+e.raw+" not closed")});i.start()},render:function(t,e){var n=this,s=c.evalExp(this.collection,t);if(Array.isArray(s)||(f.isString(s)&&0<s.length?s=[s]:f.isObject(s)&&(s=Object.keys(s).map(function(e){return[e,s[e]]}))),!Array.isArray(s)||!s.length)return a.renderer.renderTemplates(this.elseTemplates,t);var r=e.offset||0,i=void 0===e.limit?s.length:e.limit;s=s.slice(r,r+i),this.reversed&&s.reverse();var o=s.map(function(e,t){var r={};return r[n.variable]=e,r.forloop={first:0===t,index:t+1,index0:t,last:t===s.length-1,length:s.length,rindex:s.length-t,rindex0:s.length-t-1},r}),u="";return l(o,function(e){return Promise.resolve().then(function(){return t.push(e)}).then(function(){return a.renderer.renderTemplates(n.templates,t)}).then(function(e){return u+=e}).catch(function(e){if(!(e instanceof p&&(u+=e.resolvedHTML,"continue"===e.message)))throw e}).then(function(){return t.pop(e)})}).catch(function(e){if(!(e instanceof p&&"break"===e.message))throw e}).then(function(){return u})}})}},{"..":2,"../src/util/assert.js":15,"../src/util/promise.js":18,"../src/util/underscore.js":20}],30:[function(e,t,r){"use strict";var o=e("..");t.exports=function(i){i.registerTag("if",{parse:function(t,e){var r,n=this;this.branches=[],this.elseTemplates=[];var s=i.parser.parseStream(e).on("start",function(){return n.branches.push({cond:t.args,templates:r=[]})}).on("tag:elsif",function(e){n.branches.push({cond:e.args,templates:r=[]})}).on("tag:else",function(){return r=n.elseTemplates}).on("tag:endif",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){for(var r=0;r<this.branches.length;r++){var n=this.branches[r],s=o.evalExp(n.cond,e);if(o.isTruthy(s))return i.renderer.renderTemplates(n.templates,e)}return i.renderer.renderTemplates(this.elseTemplates,e)}})}},{"..":2}],31:[function(e,t,r){"use strict";var o=e(".."),n=o.lexical,s=new RegExp("with\\s+("+n.value.source+")"),u=/[^\s,]+/,a=e("../src/util/assert.js");t.exports=function(i){i.registerTag("include",{parse:function(e){var t=u.exec(e.args);t&&(this.staticValue=t[0]),(t=n.value.exec(e.args))&&(this.value=t[0]),(t=s.exec(e.args))&&(this.with=t[1])},render:function(t,r){var e=t.opts.dynamicPartials?o.evalValue(this.value,t):this.staticValue;a(e,"cannot include with empty filename");var n=t.opts.blocks,s=t.opts.blockMode;return t.opts.blocks={},t.opts.blockMode="output",this.with&&(r[e]=o.evalValue(this.with,t)),i.getTemplate(e,t.opts.root).then(function(e){return t.push(r),i.renderer.renderTemplates(e,t)}).then(function(e){return t.pop(r),t.opts.blocks=n,t.opts.blockMode=s,e})}})}},{"..":2,"../src/util/assert.js":15}],32:[function(e,t,r){"use strict";var n=e(".."),s=e("../src/util/assert.js"),i=n.lexical,o=e("../src/scope").types;t.exports=function(e){e.registerTag("increment",{parse:function(e){var t=e.args.match(i.identifier);s(t,"illegal identifier "+e.args),this.variable=t[0]},render:function(e,t){var r=e.findContextFor(this.variable,function(e){return Object.getPrototypeOf(e)!==o.CaptureScope&&Object.getPrototypeOf(e)!==o.AssignScope});r||(r=Object.create(o.IncrementScope),e.unshift(r)),"number"!=typeof r[this.variable]&&(r[this.variable]=0);var n=r[this.variable];return r[this.variable]++,n}})}},{"..":2,"../src/scope":11,"../src/util/assert.js":15}],33:[function(t,e,r){"use strict";e.exports=function(e){t("./assign.js")(e),t("./capture.js")(e),t("./case.js")(e),t("./comment.js")(e),t("./cycle.js")(e),t("./decrement.js")(e),t("./for.js")(e),t("./if.js")(e),t("./include.js")(e),t("./increment.js")(e),t("./layout.js")(e),t("./raw.js")(e),t("./tablerow.js")(e),t("./unless.js")(e)}},{"./assign.js":23,"./capture.js":24,"./case.js":25,"./comment.js":26,"./cycle.js":27,"./decrement.js":28,"./for.js":29,"./if.js":30,"./include.js":31,"./increment.js":32,"./layout.js":34,"./raw.js":35,"./tablerow.js":36,"./unless.js":37}],34:[function(e,t,r){"use strict";var s=e(".."),n=s.lexical,o=e("../src/util/assert.js"),u=/\S+/;t.exports=function(i){i.registerTag("layout",{parse:function(e,t){var r=u.exec(e.args);r&&(this.staticLayout=r[0]),(r=n.value.exec(e.args))&&(this.layout=r[0]),this.tpls=i.parser.parse(t)},render:function(t,r){var n=t.opts.dynamicPartials?s.evalValue(this.layout,t):this.staticLayout;return o(n,"cannot apply layout with empty filename"),t.opts.blockMode="store",i.renderer.renderTemplates(this.tpls,t).then(function(e){return void 0===t.opts.blocks[""]&&(t.opts.blocks[""]=e),i.getTemplate(n,t.opts.root)}).then(function(e){return t.push(r),t.opts.blockMode="output",i.renderer.renderTemplates(e,t)}).then(function(e){return t.pop(r),e})}}),i.registerTag("block",{parse:function(e,t){var r=this,n=/\w+/.exec(e.args);this.block=n?n[0]:"",this.tpls=[];var s=i.parser.parseStream(t).on("tag:endblock",function(){return s.stop()}).on("template",function(e){return r.tpls.push(e)}).on("end",function(){throw new Error("tag "+e.raw+" not closed")});s.start()},render:function(t){var r=this;return Promise.resolve(t.opts.blocks[this.block]).then(function(e){return void 0===e?i.renderer.renderTemplates(r.tpls,t):e}).then(function(e){return"store"===t.opts.blockMode?(t.opts.blocks[r.block]=e,""):e})}})}},{"..":2,"../src/util/assert.js":15}],35:[function(e,t,r){"use strict";t.exports=function(s){s.registerTag("raw",{parse:function(e,t){var r=this;this.tokens=[];var n=s.parser.parseStream(t);n.on("token",function(e){"endraw"===e.name?n.stop():r.tokens.push(e)}).on("end",function(){throw new Error("tag "+e.raw+" not closed")}),n.start()},render:function(e,t){return this.tokens.map(function(e){return e.raw}).join("")}})}},{}],36:[function(e,t,r){"use strict";var p=e(".."),h=e("../src/util/promise.js").mapSeries,n=p.lexical,o=e("../src/util/assert.js"),u=new RegExp("^("+n.identifier.source+")\\s+in\\s+("+n.value.source+")(?:\\s+"+n.hash.source+")*$");t.exports=function(f){f.registerTag("tablerow",{parse:function(e,t){var r,n=this,s=u.exec(e.args);o(s,"illegal tag: "+e.raw),this.variable=s[1],this.collection=s[2],this.templates=[];var i=f.parser.parseStream(t).on("start",function(){return r=n.templates}).on("tag:endtablerow",function(e){return i.stop()}).on("template",function(e){return r.push(e)}).on("end",function(){throw new Error("tag "+e.raw+" not closed")});i.start()},render:function(r,e){var n,s,i=this,t=p.evalExp(this.collection,r)||[],o="",u=e.offset||0,a=void 0===e.limit?t.length:e.limit,c=e.cols;t=t.slice(u,u+a),c||(c=t.length);var l=t.map(function(e,t){var r={};return r[i.variable]=e,r});return h(l,function(t,e){return n=Math.floor(e/c)+1,1===(s=e%c+1)&&(1!==n&&(o+="</tr>"),o+='<tr class="row'+n+'">'),o+='<td class="col'+s+'">',r.push(t),f.renderer.renderTemplates(i.templates,r).then(function(e){return r.pop(t),o+=e,o+="</td>"})}).then(function(){return 0<n&&(o+="</tr>"),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)});

@@ -0,1 +1,2 @@

'use strict'
const strftime = require('./src/util/strftime.js')

@@ -5,3 +6,3 @@ const _ = require('./src/util/underscore.js')

var escapeMap = {
let escapeMap = {
'&': '&amp;',

@@ -13,3 +14,3 @@ '<': '&lt;',

}
var unescapeMap = {
let unescapeMap = {
'&amp;': '&',

@@ -22,3 +23,3 @@ '&lt;': '<',

var filters = {
let filters = {
'abs': v => Math.abs(v),

@@ -30,3 +31,3 @@ 'append': (v, arg) => v + arg,

'date': (v, arg) => {
var date = v
let date = v
if (v === 'now') {

@@ -48,3 +49,3 @@ date = new Date()

'join': (v, arg) => v.join(arg),
'last': v => v[v.length - 1],
'last': v => _.last(v),
'lstrip': v => stringify(v).replace(/^\s+/, ''),

@@ -64,3 +65,3 @@ 'map': (arr, arg) => arr.map(v => v[arg]),

'round': (v, arg) => {
var amp = Math.pow(10, arg || 0)
let amp = Math.pow(10, arg || 0)
return Math.round(v * amp, arg) / amp

@@ -87,4 +88,4 @@ },

if (o === undefined) o = '...'
var arr = v.split(' ')
var ret = arr.slice(0, l).join(' ')
let arr = v.split(' ')
let ret = arr.slice(0, l).join(' ')
if (arr.length > l) ret += o

@@ -94,3 +95,3 @@ return ret

'uniq': function (arr) {
var u = {}
let u = {}
return (arr || []).filter(val => {

@@ -117,3 +118,3 @@ if (u.hasOwnProperty(val)) {

function getFixed (v) {
var p = (v + '').split('.')
let p = (v + '').split('.')
return (p.length > 1) ? p[1].length : 0

@@ -132,3 +133,3 @@ }

return (l, r) => {
var f = getMaxFixed(l, r)
let f = getMaxFixed(l, r)
return cb(l, r).toFixed(f)

@@ -135,0 +136,0 @@ }

{
"name": "liquidjs",
"version": "5.0.1",
"version": "5.0.2",
"description": "Liquid template engine by pure JavaScript: compatible to shopify, easy to extend.",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -13,3 +13,3 @@ // quote related

// peoperty access
var identifier = /[\w-]+/
var identifier = /[\w-]+[?]?/
var subscript = new RegExp(`\\[(?:${quoted.source}|[\\w-\\.]+)\\]`)

@@ -16,0 +16,0 @@ var literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)

@@ -0,1 +1,2 @@

'use strict'
const _ = require('./util/underscore.js')

@@ -7,65 +8,66 @@ const lexical = require('./lexical.js')

getAll: function () {
var ctx = {}
for (var i = this.scopes.length - 1; i >= 0; i--) {
_.assign(ctx, this.scopes[i])
}
return ctx
return this.contexts.reduce((ctx, val) => Object.assign(ctx, val), Object.create(null))
},
get: function (str) {
try {
return this.getPropertyByPath(this.scopes, str)
} catch (e) {
if (!/undefined variable/.test(e.message) || this.opts.strict_variables) {
throw e
get: function (path) {
let paths = this.propertyAccessSeq(path)
let scope = this.findContextFor(paths[0]) || _.last(this.contexts)
return paths.reduce((value, key) => this.readProperty(value, key), scope)
},
set: function (path, v) {
let paths = this.propertyAccessSeq(path)
let scope = this.findContextFor(paths[0]) || _.last(this.contexts)
paths.some((key, i) => {
if (!_.isObject(scope)) {
return true
}
}
if (i === paths.length - 1) {
scope[key] = v
return true
}
if (undefined === scope[key]) {
scope[key] = {}
}
scope = scope[key]
})
},
set: function (k, v) {
var scope = this.findScopeFor(k)
setPropertyByPath(scope, k, v)
return this
unshift: function (ctx) {
return this.contexts.unshift(ctx)
},
push: function (ctx) {
assert(ctx, `trying to push ${ctx} into scopes`)
return this.scopes.push(ctx)
return this.contexts.push(ctx)
},
pop: function () {
return this.scopes.pop()
},
findScopeFor: function (key) {
var i = this.scopes.length - 1
while (i >= 0 && !(key in this.scopes[i])) {
i--
pop: function (ctx) {
if (!arguments.length) {
return this.contexts.pop()
}
if (i < 0) {
i = this.scopes.length - 1
let i = this.contexts.findIndex(scope => scope === ctx)
if (i === -1) {
throw new TypeError('scope not found, cannot pop')
}
return this.scopes[i]
return this.contexts.splice(i, 1)[0]
},
unshift: function (ctx) {
assert(ctx, `trying to push ${ctx} into scopes`)
return this.scopes.unshift(ctx)
findContextFor: function (key, filter) {
filter = filter || (() => true)
for (let i = this.contexts.length - 1; i >= 0; i--) {
let candidate = this.contexts[i]
if (!filter(candidate)) continue
if (key in candidate) {
return candidate
}
}
return null
},
shift: function () {
return this.scopes.shift()
},
getPropertyByPath: function (scopes, path) {
var paths = this.propertyAccessSeq(path + '')
if (!paths.length) {
throw new TypeError('undefined variable: ' + path)
readProperty: function (obj, key) {
let val
if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {
val = obj.length
} else if (_.isNil(obj)) {
val = undefined
} else {
val = obj[key]
}
var key = paths.shift()
var value = getValueFromScopes(key, scopes)
if (_.isNil(value)) {
throw new TypeError('undefined variable: ' + key)
if (_.isNil(val) && this.opts.strict_variables) {
throw new TypeError(`undefined variable: ${key}`)
}
while (paths.length) {
key = paths.shift()
value = getValueFromParent(key, value)
if (_.isNil(value)) {
throw new TypeError('undefined variable: ' + key)
}
}
return value
return val
},

@@ -82,6 +84,7 @@

propertyAccessSeq: function (str) {
var seq = []
var name = ''
var j
var i = 0
str = String(str)
let seq = []
let name = ''
let j
let i = 0
while (i < str.length) {

@@ -92,3 +95,3 @@ switch (str[i]) {

var delemiter = str[i + 1]
let delemiter = str[i + 1]
if (/['"]/.test(delemiter)) { // foo["bar"]

@@ -121,2 +124,6 @@ j = str.indexOf(delemiter, i + 2)

push()
if (!seq.length) {
throw new TypeError(`invalid path:"${str}"`)
}
return seq

@@ -131,38 +138,2 @@

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) {

@@ -194,4 +165,11 @@ var stack = 1 // count of '[' - count of ']'

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)
}

@@ -0,1 +1,2 @@

'use strict'
const lexical = require('./lexical.js')

@@ -6,8 +7,8 @@ const Syntax = require('./syntax.js')

function hash (markup, scope) {
var obj = {}
var match
let obj = {}
let match
lexical.hashCapture.lastIndex = 0
while ((match = lexical.hashCapture.exec(markup))) {
var k = match[1]
var v = match[2]
let k = match[1]
let v = match[2]
obj[k] = Syntax.evalValue(v, scope)

@@ -19,8 +20,8 @@ }

module.exports = function () {
var tagImpls = {}
let tagImpls = {}
var _tagInstance = {
let _tagInstance = {
render: function (scope) {
var obj = hash(this.token.args, scope)
var impl = this.tagImpl
let obj = hash(this.token.args, scope)
let impl = this.tagImpl
if (typeof impl.render !== 'function') {

@@ -36,3 +37,3 @@ return Promise.resolve('')

var tagImpl = tagImpls[this.name]
let tagImpl = tagImpls[this.name]
assert(tagImpl, `tag ${this.name} not found`)

@@ -51,3 +52,3 @@ this.tagImpl = Object.create(tagImpl)

function construct (token, tokens) {
var instance = Object.create(_tagInstance)
let instance = Object.create(_tagInstance)
instance.parse(token, tokens)

@@ -54,0 +55,0 @@ return instance

@@ -60,15 +60,6 @@ const toStr = Object.prototype.toString

var srcs = Array.prototype.slice.call(arguments, 1)
srcs.forEach(function (src) {
_assignBinary(object, src)
})
srcs.forEach((src) => Object.assign(object, src))
return object
}
function _assignBinary (dst, src) {
forOwn(src, function (v, k) {
dst[k] = v
})
return dst
}
function last (arr) {

@@ -75,0 +66,0 @@ return arr[arr.length - 1]

const resolve = require('resolve-url')
const splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/
const urlRe = /^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/
const _ = require('./underscore')

@@ -19,3 +20,3 @@ // https://github.com/jinder/path/blob/master/path.js#L567

}
if (root && root.charAt(root.length - 1) !== '/') {
if (root && _.last(root) !== '/') {
root += '/'

@@ -22,0 +23,0 @@ }

@@ -0,1 +1,2 @@

'use strict'
const Liquid = require('..')

@@ -5,2 +6,3 @@ const lexical = Liquid.lexical

const assert = require('../src/util/assert.js')
const types = require('../src/scope').types

@@ -10,3 +12,3 @@ module.exports = function (liquid) {

parse: function (token) {
var match = token.args.match(re)
let match = token.args.match(re)
assert(match, `illegal token ${token.raw}`)

@@ -17,3 +19,5 @@ this.key = match[1]

render: function (scope) {
scope.set(this.key, liquid.evalValue(this.value, scope))
let ctx = Object.create(types.AssignScope)
ctx[this.key] = liquid.evalValue(this.value, scope)
scope.push(ctx)
return Promise.resolve('')

@@ -20,0 +24,0 @@ }

@@ -0,1 +1,2 @@

'use strict'
const Liquid = require('..')

@@ -5,2 +6,3 @@ const lexical = Liquid.lexical

const assert = require('../src/util/assert.js')
const types = require('../src/scope.js').types

@@ -27,3 +29,5 @@ module.exports = function (liquid) {

.then((html) => {
scope.set(this.variable, html)
let ctx = Object.create(types.CaptureScope)
ctx[this.variable] = html
scope.push(ctx)
})

@@ -30,0 +34,0 @@ }

@@ -0,4 +1,6 @@

'use strict'
const Liquid = require('..')
const lexical = Liquid.lexical
const assert = require('../src/util/assert.js')
const types = require('../src/scope').types

@@ -13,7 +15,19 @@ module.exports = function (liquid) {

render: function (scope, hash) {
var v = scope.get(this.variable)
if (typeof v !== 'number') v = 0
scope.set(this.variable, v - 1)
let context = scope.findContextFor(
this.variable,
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]
}
})
}

@@ -87,3 +87,3 @@ const Liquid = require('..')

})
.then(() => scope.pop())
.then(() => scope.pop(context))
}).catch((e) => {

@@ -90,0 +90,0 @@ if (e instanceof RenderBreakError && e.message === 'break') {

@@ -45,3 +45,3 @@ const Liquid = require('..')

.then((html) => {
scope.pop()
scope.pop(hash)
scope.opts.blocks = originBlocks

@@ -48,0 +48,0 @@ scope.opts.blockMode = originBlockMode

@@ -0,4 +1,6 @@

'use strict'
const Liquid = require('..')
const assert = require('../src/util/assert.js')
const lexical = Liquid.lexical
const types = require('../src/scope').types

@@ -8,3 +10,3 @@ module.exports = function (liquid) {

parse: function (token) {
var match = token.args.match(lexical.identifier)
let match = token.args.match(lexical.identifier)
assert(match, `illegal identifier ${token.args}`)

@@ -14,7 +16,21 @@ this.variable = match[0]

render: function (scope, hash) {
var v = scope.get(this.variable)
if (typeof v !== 'number') v = 0
scope.set(this.variable, v + 1)
let context = scope.findContextFor(
this.variable,
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
}
let val = context[this.variable]
context[this.variable]++
return val
}
})
}

@@ -41,3 +41,2 @@ const Liquid = require('..')

.then(templates => {
// push the hash
scope.push(hash)

@@ -47,5 +46,4 @@ scope.opts.blockMode = 'output'

})
// pop the hash
.then(partial => {
scope.pop()
scope.pop(hash)
return partial

@@ -52,0 +50,0 @@ })

@@ -12,3 +12,3 @@ module.exports = function (liquid) {

})
.on('end', x => {
.on('end', () => {
throw new Error(`tag ${tagToken.raw} not closed`)

@@ -19,6 +19,5 @@ })

render: function (scope, hash) {
var tokens = this.tokens.map(token => token.raw).join('')
return Promise.resolve(tokens)
return this.tokens.map(token => token.raw).join('')
}
})
}

@@ -46,7 +46,6 @@ const Liquid = require('..')

if (!cols) cols = collection.length
var contexts = []
collection.some((item, i) => {
var contexts = collection.map((item, i) => {
var ctx = {}
ctx[this.variable] = item
contexts.push(ctx)
return ctx
})

@@ -53,0 +52,0 @@

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc