From f9c7e46a347576c9327aaa0d9b6a5b4cd07c26e2 Mon Sep 17 00:00:00 2001 From: HybridDog <3192173+HybridDog@users.noreply.github.com> Date: Sat, 4 Jan 2020 15:44:48 +0100 Subject: [PATCH] Add table.key_value_swap (#9248) --- builtin/common/misc_helpers.lua | 9 +++++++++ doc/lua_api.txt | 2 ++ 2 files changed, 11 insertions(+) diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index 88a498927..199f13cd1 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -575,6 +575,15 @@ function table.insert_all(t, other) end +function table.key_value_swap(t) + local ti = {} + for k,v in pairs(t) do + ti[v] = k + end + return ti +end + + -------------------------------------------------------------------------------- -- mainmenu only functions -------------------------------------------------------------------------------- diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 35be95d51..374a774b1 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -2902,6 +2902,8 @@ Helper functions * `table.insert_all(table, other_table)`: * Appends all values in `other_table` to `table` - uses `#table + 1` to find new indices. +* `table.key_value_swap(t)`: returns a table with keys and values swapped + * If multiple keys in `t` map to the same value, the result is undefined. * `minetest.pointed_thing_to_face_pos(placer, pointed_thing)`: returns a position. * returns the exact position on the surface of a pointed node