Module: Transproc::Registry
- Included in:
- ArrayTransformations, ClassTransformations, Coercions, Conditional, HashTransformations, Recursion
- Defined in:
- lib/transproc/registry.rb
Overview
Container to define transproc functions in, and access them via ‘[]` method from the outside of the module
Instance Method Summary collapse
-
#[](fn, *args) ⇒ Transproc::Function
(also: #t)
Builds the transformation.
-
#fetch(fn) ⇒ #call
Gets the procedure for creating a transproc.
-
#import(source, options = nil) ⇒ itself
(also: #uses)
Imports either a method (converted to a proc) from another module, or all methods from that module.
-
#store ⇒ Transproc::Store
The store of procedures imported from external modules.
Instance Method Details
#[](fn, *args) ⇒ Transproc::Function Also known as: t
Builds the transformation
47 48 49 |
# File 'lib/transproc/registry.rb', line 47 def [](fn, *args) Function.new(fetch(fn), args: args, name: fn) end |
#fetch(fn) ⇒ #call
Gets the procedure for creating a transproc
117 118 119 120 121 122 |
# File 'lib/transproc/registry.rb', line 117 def fetch(fn) return fn unless fn.instance_of? Symbol respond_to?(fn) ? method(fn) : store.fetch(fn) rescue raise FunctionNotFoundError.new(fn, self) end |
#import(source, options = nil) ⇒ itself Also known as: uses
Imports either a method (converted to a proc) from another module, or all methods from that module.
If the external module is a registry, looks for its imports too.
end
module Qux
def self.qux(value)
value.reverse
end
end
module Bar
extend Transproc::Registry
import :foo, from: Foo, as: :baz
import :bar, from: Foo
import Qux
end
Bar[:baz]['Qux'] # => 'QUX'
Bar[:bar]['Qux'] # => 'qux'
Bar[:qux]['Qux'] # => 'xuQ'
95 96 97 98 |
# File 'lib/transproc/registry.rb', line 95 def import(source, = nil) @store = store.import(source, ) self end |
#store ⇒ Transproc::Store
The store of procedures imported from external modules
105 106 107 |
# File 'lib/transproc/registry.rb', line 105 def store @store ||= Store.new end |