libs/table: Add table.move

Fri, 17 Mar 2023 17:09:00 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Fri, 17 Mar 2023 17:09:00 +0000
changeset 483
33d566513eb0
parent 482
4c4f3dd62c54
child 484
5e2978489c95

libs/table: Add table.move

libs/table.lua file | annotate | diff | comparison | revisions
--- a/libs/table.lua	Fri Mar 17 12:31:28 2023 +0000
+++ b/libs/table.lua	Fri Mar 17 17:09:00 2023 +0000
@@ -1,1 +1,20 @@
-return {pack = function(...) return {n = select("#", ...); ...} end; create = function() return {} end}
+return {
+	pack = function(...) return {n = select("#", ...); ...} end;
+	create = function() return {} end;
+	move = function (a1, f, e, t, a2)
+		a2 = a2 or a1;
+		if e >= f then
+			local n = (e - f) + 1;
+			if t > e or t <= f or a1 ~= a2 then
+				for i = 0, n-1 do
+					a2[t+i] = a1[f+i];
+				end
+			else
+				for i = n-1, 0, -1 do
+					a2[t+i] = a1[f+i];
+				end
+			end
+		end
+		return a2;
+	end;
+}

mercurial