aboutsummaryrefslogtreecommitdiff
path: root/utils.lua
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2017-09-20 04:43:50 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2017-09-20 04:43:50 -0700
commit18365e02b14686e9ad26d1fbc5ac19984b73da6b (patch)
tree541932538d66f0505e671d658b4017a3fc67b274 /utils.lua
parentc77ee8f8f9d661c7e7a5753928949c1eb83823c6 (diff)
Recompiled.
Diffstat (limited to 'utils.lua')
-rw-r--r--utils.lua24
1 files changed, 24 insertions, 0 deletions
diff --git a/utils.lua b/utils.lua
index dde056c..b50a88f 100644
--- a/utils.lua
+++ b/utils.lua
@@ -91,6 +91,8 @@ utils = {
start, stop, step = 1, start, 1
elseif step == nil then
step = 1
+ elseif step == 0 then
+ error("Range step cannot be zero.")
end
return setmetatable({
start = start,
@@ -105,9 +107,31 @@ utils = {
end
end
return iter, self, 0
+ end,
+ __index = function(self, i)
+ if type(i) ~= "Number" then
+ return nil
+ end
+ if i % 1 ~= 0 then
+ return nil
+ end
+ if i <= 0 or i - 1 > (self.stop - self.start) / self.step then
+ return nil
+ end
+ return self.start + (i - 1) * self.step
+ end,
+ __len = function(self)
+ local len = (self.stop - self.start) / self.step
+ if len < 0 then
+ len = 0
+ end
+ return len
end
})
end,
+ nth_to_last = function(list, n)
+ return list[#list - n + 1]
+ end,
keys = function(t)
local _accum_0 = { }
local _len_0 = 1