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:
authorYonaba <roland.yonaba@gmail.com>2017-10-26 12:09:13 +0300
committerYonaba <roland.yonaba@gmail.com>2017-10-26 12:09:13 +0300
commite2ec347d1f30a813f4c2f085849b2d2c8bbc89b5 (patch)
treeba4274ba1826daf068b655797451b8ff065056eb
parent4c72d2c3dd80e9d8cf15d4d17b88470f404a69a6 (diff)
sortBy now sorts in-place (Fixes #39)
-rw-r--r--moses.lua7
-rw-r--r--moses_min.lua3
2 files changed, 7 insertions, 3 deletions
diff --git a/moses.lua b/moses.lua
index e87efb6..9b9c434 100644
--- a/moses.lua
+++ b/moses.lua
@@ -510,7 +510,7 @@ end
-- @name sortBy
-- @param t a table
-- @param[opt] transform a `transform` function to sort elements prototyped as `transform (v)`. Defaults to @{identity}
--- @param[optchain] comp a comparision function, defaults to the `<` operator
+-- @param[optchain] comp a comparison function, defaults to the `<` operator
-- @return a new array of sorted values
-- @see sort
function _.sortBy(t, transform, comp)
@@ -524,7 +524,10 @@ function _.sortBy(t, transform, comp)
_t[#_t+1] = {value = v, transform = f(v)}
end)
t_sort(_t, function(a,b) return comp(a.transform, b.transform) end)
- return _.pluck(_t, 'value')
+ _.each(t, function(i)
+ t[i] = _t[i].value
+ end)
+ return t
end
--- Splits a table into subsets groups.
diff --git a/moses_min.lua b/moses_min.lua
index bb31fc4..7f45b72 100644
--- a/moses_min.lua
+++ b/moses_min.lua
@@ -88,7 +88,8 @@ local bdb=_db or bab.identity
if bab.isString(_db)then bdb=function(ddb)return ddb[_db]end end;adb=adb or dab;local cdb={}
bab.each(dcb,function(ddb,__c)
cdb[#cdb+1]={value=__c,transform=bdb(__c)}end)
-cca(cdb,function(ddb,__c)return adb(ddb.transform,__c.transform)end)return bab.pluck(cdb,'value')end
+cca(cdb,function(ddb,__c)return adb(ddb.transform,__c.transform)end)
+bab.each(dcb,function(ddb)dcb[ddb]=cdb[ddb].value end)return dcb end
function bab.groupBy(dcb,_db,...)local adb={...}local bdb={}
bab.each(dcb,function(cdb,ddb)local __c=_db(cdb,ddb,c_b(adb))
if