Vim documentation: vital/Data/Closure
main help file
vital/Data/Closure.txt Provide Closure object.
Maintainer: thinca <thinca+vim@gmail.com>
==============================================================================
CONTENTS Vital.Data.Closure-contents
INTRODUCTION Vital.Data.Closure-introduction
INTERFACE Vital.Data.Closure-interface
FUNCTIONS Vital.Data.Closure-functions
OBJECTS Vital.Data.Closure-objects
Closure Object Vital.Data.Closure-Closure
==============================================================================
INTRODUCTION Vital.Data.Closure-introduction
Vital.Data.Closure provides Closure object.
let C = vital#{plugin-name}#new().import('Data.Closure')
==============================================================================
TERM Vital.Data.Closure-term
{callable} Vital.Data.Closure-term-callable
A {callable} is one of the followings.
- A Funcref
- Vital.Data.Closure.from_funcref()
- A string of function name which begins from "*"
- Vital.Data.Closure.from_funcname()
- An ex command string which begins from ":"
- Vital.Data.Closure.from_command()
- A List of ex command strings which begin from ":"
- Vital.Data.Closure.from_command()
- An operator string such as '+', '%', or '=~#'
- Vital.Data.Closure.from_operator()
- An expr string which begins from "="
- Vital.Data.Closure.from_expr()
- A Closure object(Vital.Data.Closure-Closure)
- A List that is arguments of Vital.Data.Closure.build().
{arglist} Vital.Data.Closure-term-arglist
This is a List for the arguments of the function.
{args}... Vital.Data.Closure-term-args
This is variadic for the function.
{context} Vital.Data.Closure-term-context
This is a Dictionary that is treated as self of {function}.
{binding} Vital.Data.Closure-term-binding
{binding} is a Dictionary. You can access to this Dictionary from
{expr} or {command} as local variables.
Note that the key for Funcref must start with a capital.
When {binding} is a List of Dictionary, a new Dictionary will be
created as new {binding}, and all dictionaries are extended to the new
dictionary.
If local variable is changed, {binding} will change similarly. This
feature is available in Vim 7.3.560 or later.
==============================================================================
INTERFACE Vital.Data.Closure-interface
------------------------------------------------------------------------------
FUNCTIONS Vital.Data.Closure-functions
Vital.Data.Closure.build()
build({callable} [, {arglist}][, {context}])
Builds a Closure object(Vital.Data.Closure-Closure) from {callable}.
It is {arglist} when the second argument or subsequent ones is a list.
It is {context} when the second argument or subsequent ones is a
dictionary.
See Vital.Data.Closure-Closure for detail of {arglist} and
{context}.
call({callable}, {args}...) Vital.Data.Closure.call()
Shortcut version of Vital.Data.Closure.apply().
{args}... is treated as {arglist}.
Vital.Data.Closure.apply()
apply({callable} [, {arglist}][, {context}])
Builds a Closure object by Vital.Data.Closure.build() and calls it.
See Vital.Data.Closure.build() for detail of arguments.
Vital.Data.Closure.from_funcref()
from_funcref({funcref} [, {arglist}][, {context}])
Builds a Closure object from {funcref}.
See Vital.Data.Closure-Closure for detail of {arglist} and
{context}.
Vital.Data.Closure.from_funcname()
from_funcname({funcname} [, {arglist}][, {context}])
Builds a Closure object from {funcname}.
There may be "*" prefix in {funcname}.
{funcname} is a builtin function or global function.
See Vital.Data.Closure-Closure for detail of {arglist} and
{context}.
from_expr({expr} [, {binding}]) Vital.Data.Closure.from_expr()
Builds a Closure object from {expr} string.
There may be "=" prefix in {expr}.
You can use a: as the arguments.
See Vital.Data.Closure-term-binding about {binding}.
from_command({command} [, {binding}]) Vital.Data.Closure.from_command()
Builds a Closure object from {command}.
{command} is a String or a List of strings.
You can use a: as the arguments.
See Vital.Data.Closure-term-binding about {binding}.
from_operator({operator}) Vital.Data.Closure.from_operator()
Builds a Closure object from {operator}.
{operator} is an operator string such as '+', '%', or '=~#'
from_method({object}, {method}) Vital.Data.Closure.from_method()
Builds a Closure object from {object}(Dictionary) and the name of
{method}.
compose({callables}) Vital.Data.Closure.compose()
Builds a new composed Closure objects from {callables}.
{callables} is a List of callable(Vital.Data.Closure-term-callable).
For example, there are the functions named "F", "G", "H":
compose(['*F', '*G', '*H']).call({args}) == F(G(H({args})))
Other example:
let sortuniq = C.compose(['*uniq', '*sort'])
echo sortuniq.call([2, 4, 2, 1, 3, 4, 5, 1, 5, 3])
" => [1, 2, 3, 4, 5]
is_closure({expr}) Vital.Data.Closure.is_closure()
Returns true when the {expr} is a Closure object.
is_callable({expr}) Vital.Data.Closure.is_callable()
Returns true when the {expr} is callable.
See also Vital.Data.Closure-term-callable.
sweep_functions() Vital.Data.Closure.sweep_functions()
Sweeps garbage functions.
Vital.Data.Closure-Closure.to_function() with {limit} creates a
function, but can not delete the function itself.
As a result, the function remains as garbage.
This function sweeps it.
This is automatically called by Vital.Data.Closure.build().
is_binding_supported() Vital.Data.Closure.is_binding_supported()
Returns true when the {binding} feature supports local changing.
See also Vital.Data.Closure-term-binding.
==============================================================================
OBJECTS Vital.Data.Closure-objects
------------------------------------------------------------------------------
Closure Object Vital.Data.Closure-Closure
A Closure object has following members.
- function(Funcref)
- arglist(Vital.Data.Closure-term-arglist)
- Part of head of arguments.
- context(Vital.Data.Closure-term-context)
Closure object can call the {function} with {arglist}, and with {context}.
Example:
let closure = C.from_funcname('strftime', ['%Y%m%d'])
echo closure.call(1412686257)
Closure.call({args}...) Vital.Data.Closure-Closure.call()
Shortcut version of Vital.Data.Closure-Closure.apply().
{args}... is treated as {arglist}.
Closure.apply({arglist}) Vital.Data.Closure-Closure.apply()
Calls this Closure object with {arglist}.
Closure.with_args({args}...) Vital.Data.Closure-Closure.with_args()
Shortcut version of Vital.Data.Closure-Closure.with_arglist().
{args}... is treated as {arglist}.
Closure.with_arglist({arglist}) Vital.Data.Closure-Closure.with_arglist()
Creates a new Closure object which has the {arglist}.
{arglist} is appended to the existing arglist.
let get_win_var = C.from_funcname('getwinvar')
let get_current_win_var = get_win_var.with_arglist([0])
let get_current_win_scope = get_current_win_var.with_arglist([''])
echo get_current_win_scope.call() is getwinvar(0, '')
Closure.with_context({context}) Vital.Data.Closure-Closure.with_context()
Creates a new Closure object which has the {context}.
{context} is replaced by the argument.
Closure.compose({callable}) Vital.Data.Closure-Closure.compose()
Same as `C.compose([{callable}, self])`.
See also Vital.Data.Closure.compose().
Closure.to_function([{limit}]) Vital.Data.Closure-Closure.to_function()
Defines a new function for this closure and return its Funcref.
Note that the function remains after this closure was deleted.
When the {limit} is supplied, the function will be marked as delete
after the function is called {limit} times.
See also Vital.Data.Closure.sweep_functions().
Closure.delete_function() Vital.Data.Closure-Closure.delete_function()
Deletes the function made by Vital.Data.Closure-Closure.to_function().
==============================================================================
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl
top - main help file - tag index