Diff

util/iterators.lua @ 5468:2660407c3b73

util.iterators: Add ripairs() (ipairs() in reverse) (thanks Maranda)
author Matthew Wild <mwild1@gmail.com>
date Fri, 12 Apr 2013 00:44:49 +0100
parent 4545:c9b91ddc9c11
child 5581:167c1da54606
line wrap: on
line diff
--- a/util/iterators.lua	Fri Apr 12 00:31:05 2013 +0100
+++ b/util/iterators.lua	Fri Apr 12 00:44:49 2013 +0100
@@ -122,6 +122,11 @@
 	--return reverse(head(n, reverse(f, s, var)));
 end
 
+local function _ripairs_iter(t, key) if key > 1 then return key-1, t[key-1]; end end
+function it.ripairs(t)
+	return _ripairs_iter, t, #t+1;
+end
+
 local function _range_iter(max, curr) if curr < max then return curr + 1; end end
 function it.range(x, y)
 	if not y then x, y = 1, x; end -- Default to 1..x if y not given