From 5fef795cda854647e1ab2048299e71565621116a Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Mon, 11 Sep 2017 13:05:25 -0700 Subject: probably working after refactor? --- utils.moon | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'utils.moon') diff --git a/utils.moon b/utils.moon index ee97903..33e1312 100644 --- a/utils.moon +++ b/utils.moon @@ -31,6 +31,26 @@ utils = { split: (str, sep="%s")-> [chunk for chunk in str\gmatch("[^#{sep}]+")] + + accumulate: (glue, co)-> + if co == nil then glue, co = "", glue + bits = {} + for bit in coroutine.wrap(co) + table.insert(bits, bit) + return table.concat(bits, glue) + + range: (start,stop,step)-> + if stop == nil + start,stop,step = 1,start,1 + elseif step == nil + step = 1 + return setmetatable({:start,:stop,:step}, { + __ipairs: => + iter = (i)=> + if i < (@stop-@start)/@step + return i+1, @start+i*@step + return iter, @, 0 + }) keys: (t)-> [k for k in pairs(t)] values: (t)-> [v for _,v in pairs(t)] -- cgit v1.2.3