Open main menu
Posts
Gists
Guilds
Users
Decipher
Docs
Open user menu
Log in
Sign up
Create a new gist
Posts
Gists
Guilds
Users
Decipher
Docs
Files
tests.src
listLib.src
tests.src
import_code("/home/me/lst/listLib.src")
print(Lst)
//to list
print("to_list")
a = {"a": 1, "b": 2, "c": {"a": 1}, "d": []}
print(Lst.to_list(a))
//to map
print("to_map")
a = [["a", 1], ["b", [1,2]], ["c", [["d", []]]]]
print(Lst.to_map(a))
//each
print("each")
a = {"a": 1, "b": 2}
b = [1,2,3]
print_map = function(k,v)
print(k + ":" + v)
end function
Lst.each(a, @print_map)
print_list = function(i)
print(i)
end function
Lst.each(b, @print_list)
//map
print("map")
double = function(n)
return n * 2
end function
print(Lst.map([1,2,3,4], @double))
//reject
print("reject")
more_5 = function(number)
return number > 5
end function
print(Lst.reject([1,2,3,4,5,6,7,8], @more_5))
// select
print("select")
more_5 = function(number)
return number > 5
end function
print(Lst.select([1,2,3,4,5,6,7,8], @more_5))
//sort
print("sort")
Coin = {}
Coin.discount = function()
return self.value - 1
end function
coins = []
for i in [5, 10, 4, 2, 11]
coin = new Coin
coin.value = i
coin.name = "coin" + i
coins.push(coin)
end for
f = function(coin)
return coin.discount
end function
print(Lst.lsort(coins, @f))
listLib.src
Lst = {}
Lst.to_list = function(map)
list = []
for i in map.indexes
if typeof(map[i]) == "map" then
list.push([i, Lst.to_list(map[i])])
else
list.push([i, map[i]])
end if
end for
return list
end function
Lst.to_map = function(list)
l = list[0:]
map = {}
for i in indexes(l)
if typeof(l[i][1]) == "list" and l[i][1].len == 2 and typeof(l[i][1][0]) == "string" then
map[l[i][0]] = to_map(l[i][1])
map[l[i][0]] =
Lst.
to_map(l[i][1])
else
map[l[i][0]] = l[i][1]
end if
end for
return map
end function
Lst.each = function(obj, func)
if typeof(obj) == "map" then
list = Lst.to_list(obj)
else
list = obj
end if
result = list[0:] //list copy.
for i in indexes(list)
if typeof(obj) == "map" then
func(result[i][0], result[i][1])
else
func(result[i])
end if
end for
end function
Lst.map = function(list, func)
result = list[0:] //list copy.
for i in indexes(list)
result[i] = func(result[i])
end for
return result
end function
Lst.reject = function(list, func)
result = list[0:] //list copy.
i = 0
while i < result.len
if func(result[i]) == true then
result.remove(i)
continue
end if
i = i + 1
end while
return result
end function
Lst.select = function(list, func)
result = list[0:] //list copy.
i = 0
while i < result.len
if func(result[i]) == false then
result.remove(i)
continue
end if
i = i + 1
end while
return result
end function
Lst.
map_
sort = function(
map
, func
)
map_copy =
Lst.to_map(
Lst.to_list(map)
)
result
// do not rename funcc to to func it will infinite loop
Lst.
l
sort = function(
list
, func
c)
f = function(i)
return
Lst.to_map(
[["sort_key", funcc(i)], ["obj", i]])
end function
result = Lst.map(list, @f
)
result
= result.sort("sort_key")
//TODOOOOOO
end function
f = function(i)
return i["obj"]
end function
return Lst.map(result, @f)
end function