diff --git a/README.md b/README.md index a6edd30d7..1e89d4104 100644 --- a/README.md +++ b/README.md @@ -209,7 +209,7 @@ engine.registerTag('upper', { ## Contribution Guide 1. Write a [test][test] to define the feature you want. -2. Just initiate an issue, or optionally: +2. File an issue, or optionally: 3. Get your test pass and make a pull request. [nunjucks]: http://mozilla.github.io/nunjucks/ diff --git a/tags/for.js b/tags/for.js index 97f0f18a7..e75ed1d20 100644 --- a/tags/for.js +++ b/tags/for.js @@ -6,7 +6,8 @@ const assert = require('../src/util/assert.js'); const re = new RegExp(`^(${lexical.identifier.source})\\s+in\\s+` + `(${lexical.value.source})` + `(?:\\s+${lexical.hash.source})*` + - `(?:\\s+(reversed))?$`); + `(?:\\s+(reversed))?` + + `(?:\\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'); + }); });