From 18365e02b14686e9ad26d1fbc5ac19984b73da6b Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Wed, 20 Sep 2017 04:43:50 -0700 Subject: Recompiled. --- utils.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'utils.lua') 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 -- cgit v1.2.3