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:
authorWill Leach <willleach@Wills-MacBook-Air.local>2017-06-03 09:31:53 +0300
committerWill Leach <willleach@Wills-MacBook-Air.local>2017-06-03 09:31:53 +0300
commit55335f223478d485861856c87f277a629d5c391f (patch)
tree3cd6178a7734166149a3023ed8e3557f719ea090
parentd7417d9a908b037a9aa847f6823078e3e676d1fc (diff)
Implemented fix for _.min and _.max to return actual value instead of comparison value
-rw-r--r--moses.lua13
-rw-r--r--spec/table_spec.lua4
2 files changed, 10 insertions, 7 deletions
diff --git a/moses.lua b/moses.lua
index f3d484a..2d65cef 100644
--- a/moses.lua
+++ b/moses.lua
@@ -36,13 +36,16 @@ 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,...)
+ _ans = comp(prev, curr) and _ans or value
+ prev = curr
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()