Class: Transproc::Store Private

Inherits:
Object
  • Object
show all
Defined in:
lib/transproc/store.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Immutable collection of named procedures from external modules

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#methodsHash (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns The associated list of imported procedures.



13
14
15
# File 'lib/transproc/store.rb', line 13

def methods
  @methods
end

Class Method Details

.contain?(key) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns wether the collection contains such procedure by its key



45
46
47
# File 'lib/transproc/store.rb', line 45

def contain?(key)
  methods.key?(key)
end

.fetch(key) ⇒ Proc

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a procedure by its key in the collection



35
36
37
# File 'lib/transproc/store.rb', line 35

def fetch(key)
  methods.fetch(key)
end

.import(*args) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Imports proc(s) to the collection from another module



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/transproc/store.rb', line 64

def import(*args)
  first = args.first
  return import_all(first) if first.instance_of?(Module)

  opts   = args.pop
  source = opts.fetch(:from)
  rename = opts.fetch(:as) { first.to_sym }

  return import_methods(source, args) if args.count > 1
  import_method(source, first, rename)
end

.initialize(methods = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



24
25
26
27
# File 'lib/transproc/store.rb', line 24

def initialize(methods = {})
  @methods = methods.dup.freeze
  freeze
end

.register(name, fn = nil, &block) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

store.register(:to_json) { |v| v.to_json }



56
57
58
# File 'lib/transproc/store.rb', line 56

def register(name, fn = nil, &block)
  self.class.new(methods.merge(name => fn || block))
end