Module: ReSorcery::Linked

Includes:
Helpers
Included in:
ReSorcery
Defined in:
lib/re_sorcery/linked.rb,
lib/re_sorcery/linked/link_class_factory.rb

Defined Under Namespace

Modules: ClassMethods Classes: LinkClassFactory

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



41
42
43
# File 'lib/re_sorcery/linked.rb', line 41

def self.included(base)
  base.extend(ClassMethods)
end


45
46
47
# File 'lib/re_sorcery/linked.rb', line 45

def self.link_class
  @link_class ||= LinkClassFactory.make_link_class
end

Instance Method Details



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/re_sorcery/linked.rb', line 49

def links
  instance_exec(&self.class.instance_exec { @links_proc ||= -> {} })
  created_links = (@_created_links ||= [])
  @_created_links = [] # Clear out so `links` can run cleanly next time

  created_links.each_with_index.inject(ok([])) do |result_array, (link_result, index)|
    result_array.and_then do |ok_array|
      link_result
        .map { |link| ok_array << link }
        .map_error { |error| "Error with Link at index #{index}: #{error}" }
    end
  end
end