diff options
author | Roland <roland.yonaba@gmail.com> | 2017-06-03 19:42:55 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-03 19:42:55 +0300 |
commit | 57864a9fe2eef5d313a18ad4fce6a659d268cbf9 (patch) | |
tree | 5e7f5ff3ec2cba51fb846010bbdb1c9f4345d5fb | |
parent | d7417d9a908b037a9aa847f6823078e3e676d1fc (diff) | |
parent | 06a80cef4a98eef5f9af1fccbbccee0550ad37e7 (diff) |
Merge pull request #35 from melbourne2991/master
Fixed _.min and _.max behavior
-rw-r--r-- | moses.lua | 15 | ||||
-rw-r--r-- | spec/table_spec.lua | 4 |
2 files changed, 12 insertions, 7 deletions
@@ -36,13 +36,18 @@ local function count(t) -- raw count of items in an map-table end local function extract(list,comp,transform,...) -- extracts value from a list - local _ans + local _ans, prev, curr local transform = transform or _.identity - for index,value in pairs(list) do - if not _ans then _ans = transform(value,...) + for index, value in pairs(list) do + if not _ans then + _ans = value + prev = transform(value,...) else - local value = transform(value,...) - _ans = comp(_ans,value) and _ans or value + curr = transform(value,...) + if comp(curr, prev) then + _ans = value + prev = curr + end end end return _ans diff --git a/spec/table_spec.lua b/spec/table_spec.lua index 209969a..8224387 100644 --- a/spec/table_spec.lua +++ b/spec/table_spec.lua @@ -442,7 +442,7 @@ context('Table functions specs', function() {name = 'John', age = 23},{name = 'Peter', age = 17}, {name = 'Steve', age = 15},{age = 33}} assert_equal(_.max(_.pluck(peoples,'age')),33) - assert_equal(_.max(peoples,function(people) return people.age end),33) + assert_equal(_.max(peoples,function(people) return people.age end),peoples[4]) end) test('directly compares items when given no iterator', function() @@ -458,7 +458,7 @@ context('Table functions specs', function() {name = 'John', age = 23},{name = 'Peter', age = 17}, {name = 'Steve', age = 15},{age = 33}} assert_equal(_.min(_.pluck(peoples,'age')),15) - assert_equal(_.min(peoples,function(people) return people.age end),15) + assert_equal(_.min(peoples,function(people) return people.age end),peoples[3]) end) test('directly compares items when given no iterator', function() |