aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc/lua.txt
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/doc/lua.txt')
-rw-r--r--runtime/doc/lua.txt223
1 files changed, 102 insertions, 121 deletions
diff --git a/runtime/doc/lua.txt b/runtime/doc/lua.txt
index c1c00df28e..9d4272c906 100644
--- a/runtime/doc/lua.txt
+++ b/runtime/doc/lua.txt
@@ -1670,26 +1670,6 @@ endswith({s}, {suffix}) *vim.endswith()*
Return: ~
(boolean) `true` if `suffix` is a suffix of `s`
-filter({f}, {src}, {...}) *vim.filter()*
- Filter a table or iterator.
-
- This is a convenience function that performs: >lua
-
- vim.iter(src):filter(f):totable()
-<
-
- Parameters: ~
- • {f} function(...):bool Filter function. Accepts the current
- iterator or table values as arguments and returns true if those
- values should be kept in the final table
- • {src} table|function Table or iterator function to filter
-
- Return: ~
- (table)
-
- See also: ~
- • |Iter:filter()|
-
gsplit({s}, {sep}, {opts}) *vim.gsplit()*
Splits a string at each instance of a separator.
@@ -1735,64 +1715,6 @@ is_callable({f}) *vim.is_callable()*
Return: ~
(boolean) `true` if `f` is callable, else `false`
-iter({src}, {...}) *vim.iter()*
- Create an Iter |lua-iter| object from a table or iterator.
-
- The input value can be a table or a function iterator (see |luaref-in|).
-
- This function wraps the input value into an interface which allows
- chaining multiple pipeline stages in an efficient manner. Each pipeline
- stage receives as input the output values from the prior stage. The values
- used in the first stage of the pipeline depend on the type passed to this
- function:
-
- • List tables pass only the value of each element
- • Non-list tables pass both the key and value of each element
- • Function iterators pass all of the values returned by their respective
- function
-
- Examples: >lua
-
- local it = vim.iter({ 1, 2, 3, 4, 5 })
- it:map(function(v)
- return v * 3
- end)
- it:rev()
- it:skip(2)
- it:totable()
- -- { 9, 6, 3 }
-
- vim.iter(ipairs({ 1, 2, 3, 4, 5 })):map(function(i, v)
- if i > 2 then return v end
- end):totable()
- -- { 3, 4, 5 }
-
- local it = vim.iter(vim.gsplit('1,2,3,4,5', ','))
- it:map(function(s) return tonumber(s) end)
- for i, d in it:enumerate() do
- print(string.format("Column %d is %d", i, d))
- end
- -- Column 1 is 1
- -- Column 2 is 2
- -- Column 3 is 3
- -- Column 4 is 4
- -- Column 5 is 5
-
- vim.iter({ a = 1, b = 2, c = 3, z = 26 }):any(function(k, v)
- return k == 'z'
- end)
- -- true
-<
-
- Parameters: ~
- • {src} table|function Table or iterator.
-
- Return: ~
- Iter |lua-iter|
-
- See also: ~
- • |lua-iter|
-
list_contains({t}, {value}) *vim.list_contains()*
Checks if a list-like table (integer keys without gaps) contains `value`.
@@ -1835,26 +1757,6 @@ list_slice({list}, {start}, {finish}) *vim.list_slice()*
Return: ~
(list) Copy of table sliced from start to finish (inclusive)
-map({f}, {src}, {...}) *vim.map()*
- Map and filter a table or iterator.
-
- This is a convenience function that performs: >lua
-
- vim.iter(src):map(f):totable()
-<
-
- Parameters: ~
- • {f} function(...):?any Map function. Accepts the current iterator
- or table values as arguments and returns one or more new
- values. Nil values are removed from the final table.
- • {src} table|function Table or iterator function to filter
-
- Return: ~
- (table)
-
- See also: ~
- • |Iter:map()|
-
pesc({s}) *vim.pesc()*
Escapes magic chars in |lua-patterns|.
@@ -2116,20 +2018,6 @@ tbl_values({t}) *vim.tbl_values()*
Return: ~
(list) List of values
-totable({f}, {...}) *vim.totable()*
- Collect an iterator into a table.
-
- This is a convenience function that performs: >lua
-
- vim.iter(f):totable()
-<
-
- Parameters: ~
- • {f} (function) Iterator function
-
- Return: ~
- (table)
-
trim({s}) *vim.trim()*
Trim whitespace (Lua pattern "%s") from both sides of a string.
@@ -2950,6 +2838,79 @@ range({spec}) *vim.version.range()*
==============================================================================
Lua module: iter *lua-iter*
+
+The *vim.iter* module provides a generic "iterator" interface over tables
+and iterator functions.
+
+*vim.iter()* wraps its table or function argument into an *Iter* object
+with methods (such as |Iter:filter()| and |Iter:map()|) that transform the
+underlying source data. These methods can be chained together to create
+iterator "pipelines". Each pipeline stage receives as input the output
+values from the prior stage. The values used in the first stage of the
+pipeline depend on the type passed to this function:
+
+• List tables pass only the value of each element
+• Non-list tables pass both the key and value of each element
+• Function iterators pass all of the values returned by their respective
+ function
+
+Examples: >lua
+
+ local it = vim.iter({ 1, 2, 3, 4, 5 })
+ it:map(function(v)
+ return v * 3
+ end)
+ it:rev()
+ it:skip(2)
+ it:totable()
+ -- { 9, 6, 3 }
+
+ vim.iter(ipairs({ 1, 2, 3, 4, 5 })):map(function(i, v)
+ if i > 2 then return v end
+ end):totable()
+ -- { 3, 4, 5 }
+
+ local it = vim.iter(vim.gsplit('1,2,3,4,5', ','))
+ it:map(function(s) return tonumber(s) end)
+ for i, d in it:enumerate() do
+ print(string.format("Column %d is %d", i, d))
+ end
+ -- Column 1 is 1
+ -- Column 2 is 2
+ -- Column 3 is 3
+ -- Column 4 is 4
+ -- Column 5 is 5
+
+ vim.iter({ a = 1, b = 2, c = 3, z = 26 }):any(function(k, v)
+ return k == 'z'
+ end)
+ -- true
+
+<
+
+In addition to the |vim.iter()| function, the |vim.iter| module provides
+convenience functions like |vim.iter.filter()| and |vim.iter.totable()|.
+
+filter({f}, {src}, {...}) *vim.iter.filter()*
+ Filter a table or iterator.
+
+ This is a convenience function that performs: >lua
+
+ vim.iter(src):filter(f):totable()
+<
+
+ Parameters: ~
+ • {f} function(...):bool Filter function. Accepts the current
+ iterator or table values as arguments and returns true if those
+ values should be kept in the final table
+ • {src} table|function Table or iterator function to filter
+
+ Return: ~
+ (table)
+
+ See also: ~
+ • |Iter:filter()|
+
Iter:all({self}, {pred}) *Iter:all()*
Return true if all of the items in the iterator match the given predicate.
@@ -2988,9 +2949,7 @@ Iter:enumerate({self}) *Iter:enumerate()*
vim.iter(ipairs(t))
<
- over
-
- >lua
+ over >lua
vim.iter(t):enumerate()
<
@@ -3348,16 +3307,38 @@ Iter:totable({self}) *Iter:totable()*
Return: ~
(table)
-new({src}, {...}) *new()*
- Create a new Iter object from a table or iterator.
+map({f}, {src}, {...}) *vim.iter.map()*
+ Map and filter a table or iterator.
+
+ This is a convenience function that performs: >lua
+
+ vim.iter(src):map(f):totable()
+<
Parameters: ~
- • {src} table|function Table or iterator to drain values from
+ • {f} function(...):?any Map function. Accepts the current iterator
+ or table values as arguments and returns one or more new
+ values. Nil values are removed from the final table.
+ • {src} table|function Table or iterator function to filter
Return: ~
- Iter
+ (table)
-next() *next()*
- TODO: Documentation
+ See also: ~
+ • |Iter:map()|
+
+totable({f}, {...}) *vim.iter.totable()*
+ Collect an iterator into a table.
+
+ This is a convenience function that performs: >lua
+
+ vim.iter(f):totable()
+<
+
+ Parameters: ~
+ • {f} (function) Iterator function
+
+ Return: ~
+ (table)
vim:tw=78:ts=8:sw=4:sts=4:et:ft=help:norl: