FunctionChain#
A function chain implements a compile-time observer pattern that allows a module to call back into dependent modules in a decoupled way.
See following example:
using import FunctionChain
# declare new function chain
fnchain activate
fn handler (x)
print "handler activated with argument" x
'append activate handler
'append activate
fn (x)
print "last handler activated with argument" x
'prepend activate
fn (x)
print "first handler activated with argument" x
activate 1
activate 2
'clear activate
'append activate handler
activate 3
Running this program will output:
first handler activated with argument 1
handler activated with argument 1
last handler activated with argument 1
first handler activated with argument 2
handler activated with argument 2
last handler activated with argument 2
handler activated with argument 3
- type
FunctionChain -
A plain type of storage type
(opaque@ _type).- spice
__call( ... ) - inline
__repr( self ) - spice
__typecall( ... ) - inline
append( self f ) -
Append function
fto function chain. When the function chain is called,fwill be called last. The return value offwill be ignored. - inline
clear( self ) -
Clear the function chain. When the function chain is applied next, no functions will be called.
- inline
on( self ) -
Returns a decorator that appends the provided function to the function chain.
- inline
prepend( self f ) -
Prepend function
fto function chain. When the function chain is called,fwill be called first. The return value offwill be ignored.
- spice
- sugar (
decorate-fnchain... ) - sugar (
fnchainname ) -
Binds a new unique and empty function chain to identifier
name. The function chain's typename is going to incorporate the name of the module in which it was declared.