From 279c6ffc09c7c38304d70295e2077d2e80d7eff6 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Wed, 25 Mar 2009 03:01:10 +0000 Subject: [PATCH] util.iterators: New iterators library --- util/iterators.lua | 94 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 util/iterators.lua diff --git a/util/iterators.lua b/util/iterators.lua new file mode 100644 index 00000000..7c9b5269 --- /dev/null +++ b/util/iterators.lua @@ -0,0 +1,94 @@ +--[[ Iterators ]]-- + +-- Reverse an iterator +function reverse(f, s, var) + local results = {}; + + -- First call the normal iterator + while true do + local ret = { f(s, var) }; + var = ret[1]; + if var == nil then break; end + table.insert(results, 1, ret); + end + + -- Then return our reverse one + local i,max = 0, #results; + return function (results) + if i