Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Yonaba/Moses.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland <roland.yonaba@gmail.com>2017-06-03 19:42:55 +0300
committerGitHub <noreply@github.com>2017-06-03 19:42:55 +0300
commit57864a9fe2eef5d313a18ad4fce6a659d268cbf9 (patch)
tree5e7f5ff3ec2cba51fb846010bbdb1c9f4345d5fb
parentd7417d9a908b037a9aa847f6823078e3e676d1fc (diff)
parent06a80cef4a98eef5f9af1fccbbccee0550ad37e7 (diff)
Merge pull request #35 from melbourne2991/master
Fixed _.min and _.max behavior
-rw-r--r--moses.lua15
-rw-r--r--spec/table_spec.lua4
2 files changed, 12 insertions, 7 deletions
diff --git a/moses.lua b/moses.lua
index f3d484a..9254c92 100644
--- a/moses.lua
+++ b/moses.lua
@@ -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()