Changeset

12744:e894677359e5

util.iterators: join: Work even with only a single iterator in the chain
author Matthew Wild <mwild1@gmail.com>
date Thu, 06 Oct 2022 18:34:40 +0100
parents 12743:19113f232423
children 12745:2cbf0e9314ff
files spec/util_iterators_spec.lua util/iterators.lua
diffstat 2 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/spec/util_iterators_spec.lua	Thu Oct 06 16:00:39 2022 +0100
+++ b/spec/util_iterators_spec.lua	Thu Oct 06 18:34:40 2022 +0100
@@ -10,6 +10,14 @@
 			end
 			assert.same(output, expect);
 		end);
+		it("should work with only a single iterator", function ()
+			local expect = { "a", "b", "c" };
+			local output = {};
+			for x in iter.join(iter.values({"a", "b", "c"})) do
+				table.insert(output, x);
+			end
+			assert.same(output, expect);
+		end);
 	end);
 
 	describe("sorted_pairs", function ()
--- a/util/iterators.lua	Thu Oct 06 16:00:39 2022 +0100
+++ b/util/iterators.lua	Thu Oct 06 18:34:40 2022 +0100
@@ -240,7 +240,8 @@
 end
 
 function it.join(f, s, var)
-	return setmetatable({ {f, s, var} }, join_mt);
+	local t = setmetatable({ {f, s, var} }, join_mt);
+	return t, { t, 1 };
 end
 
 return it;