Add table.key_value_swap (#9248)
authorHybridDog <3192173+HybridDog@users.noreply.github.com>
Sat, 4 Jan 2020 14:44:48 +0000 (15:44 +0100)
committersfan5 <sfan5@live.de>
Sat, 4 Jan 2020 14:44:48 +0000 (15:44 +0100)
builtin/common/misc_helpers.lua
doc/lua_api.txt

index 88a498927a335e4eb1a7311e85575de75da3d8e3..199f13cd1d940d5ad55d1f885d980b413f7b0741 100644 (file)
@@ -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
 --------------------------------------------------------------------------------
index 35be95d513e8c28465ca134c49490f7cff07c417..374a774b1148705d27d8fbf28f719e383b7de215 100644 (file)
@@ -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