diff options
author | Roland <roland.yonaba@gmail.com> | 2019-04-01 02:59:16 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-01 02:59:16 +0300 |
commit | e2e7af485283ae09c28c97a9af2937b448fd595f (patch) | |
tree | d3048f579de9c0e179089bd3f1412c788dc96b19 | |
parent | 0d4ae7f9f7d4528f233c2a2214da93ae64f6294a (diff) | |
parent | 7b79288b2d76828f00dff2bdfe6260733c9d800f (diff) |
Merge pull request #67 from martinklepsch/patch-1
Fix `chunk` to avoid starting chunks at index `0`
-rw-r--r-- | moses.lua | 2 | ||||
-rw-r--r-- | spec/array_spec.lua | 11 |
2 files changed, 12 insertions, 1 deletions
@@ -1204,8 +1204,8 @@ function M.chunk(array, f) local ch, ck, prev, val = {}, 0 for k,v in ipairs(array) do val = f(v, k) - prev = (prev==nil) and val or prev ck = ((val~=prev) and (ck+1) or ck) + prev = (prev==nil) and val or prev if not ch[ck] then ch[ck] = {array[k]} else diff --git a/spec/array_spec.lua b/spec/array_spec.lua index ff8063c..725d6ec 100644 --- a/spec/array_spec.lua +++ b/spec/array_spec.lua @@ -380,6 +380,17 @@ describe('Array functions specs', function() assert.is_true(M.isEqual(v[3], {3,3})) assert.is_true(M.isEqual(v[4], {4,4})) end) + + it('chunks in blocks consecutive values when using identity as function', function() + local t = {1,1,2,2,3,3,4} + local v = M.chunk(t, function(v) return v end) + assert.is_nil(v[0]) + assert.equal(#v, 4) + assert.is_true(M.isEqual(v[1], {1,1})) + assert.is_true(M.isEqual(v[2], {2,2})) + assert.is_true(M.isEqual(v[3], {3,3})) + assert.is_true(M.isEqual(v[4], {4})) + end) end) |