aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/shared.lua
diff options
context:
space:
mode:
authorHirokazu Hata <h.hata.ai.t@gmail.com>2020-02-18 17:41:29 +0900
committerHirokazu Hata <h.hata.ai.t@gmail.com>2020-02-18 17:43:10 +0900
commite2ed8053bf722d4d111fac7dcdb07179fdea8752 (patch)
treef350874422f926114e15e2922ac2af34535fd039 /runtime/lua/vim/shared.lua
parenta2efc9cf8b0fdf14b01156ba424145e1847f789c (diff)
downloadrneovim-e2ed8053bf722d4d111fac7dcdb07179fdea8752.tar.gz
rneovim-e2ed8053bf722d4d111fac7dcdb07179fdea8752.tar.bz2
rneovim-e2ed8053bf722d4d111fac7dcdb07179fdea8752.zip
lua: move test helper function, map and filter, to vim.shared module
Diffstat (limited to 'runtime/lua/vim/shared.lua')
-rw-r--r--runtime/lua/vim/shared.lua30
1 files changed, 30 insertions, 0 deletions
diff --git a/runtime/lua/vim/shared.lua b/runtime/lua/vim/shared.lua
index 6eb7a970e4..498992aa2e 100644
--- a/runtime/lua/vim/shared.lua
+++ b/runtime/lua/vim/shared.lua
@@ -135,6 +135,36 @@ function vim.tbl_values(t)
return values
end
+--- Apply a function to all values of a table.
+---
+--@param func function or callable table
+--@param t table
+function vim.tbl_map(func, t)
+ vim.validate{func={func,'c'},t={t,'t'}}
+
+ local rettab = {}
+ for k, v in pairs(t) do
+ rettab[k] = func(v)
+ end
+ return rettab
+end
+
+--- Filter a table using a predicate function
+---
+--@param func function or callable table
+--@param t table
+function vim.tbl_filter(func, t)
+ vim.validate{func={func,'c'},t={t,'t'}}
+
+ local rettab = {}
+ for _, entry in pairs(t) do
+ if func(entry) then
+ table.insert(rettab, entry)
+ end
+ end
+ return rettab
+end
+
--- Checks if a list-like (vector) table contains `value`.
---
--@param t Table to check