diff --git a/tags/for.js b/tags/for.js index ba2c75cef..e75ed1d20 100644 --- a/tags/for.js +++ b/tags/for.js @@ -7,7 +7,7 @@ const re = new RegExp(`^(${lexical.identifier.source})\\s+in\\s+` + `(${lexical.value.source})` + `(?:\\s+${lexical.hash.source})*` + `(?:\\s+(reversed))?` + - `(?:\\s+${lexical.hash.source})*`); + `(?:\\s+${lexical.hash.source})*$`); module.exports = function(liquid) { liquid.registerTag('for', { diff --git a/test/tags/for.js b/test/tags/for.js index fc26b15bc..6872286fd 100644 --- a/test/tags/for.js +++ b/test/tags/for.js @@ -74,9 +74,21 @@ describe('tags/for', function() { .to.eventually.equal('67'); }); - it('should support for reversed', function() { + it('should support for reversed in the last position', function() { var src = '{% for i in (1..5) limit:2 reversed %}{{ i }}{% endfor %}'; return expect(liquid.parseAndRender(src, ctx)) .to.eventually.equal('21'); }); + + it('should support for reversed in the middle position', function() { + var src = '{% for i in (1..5) reversed limit:2 %}{{ i }}{% endfor %}'; + return expect(liquid.parseAndRender(src, ctx)) + .to.eventually.equal('21'); + }); + + it('should support for reversed in the first position', function() { + var src = '{% for i in (1..5) offset:2 reversed limit:4 %}{{ i }}{% endfor %}'; + return expect(liquid.parseAndRender(src, ctx)) + .to.eventually.equal('543'); + }); });