class Conjunction::Nexus
The Nexus
provides a central source to couple objects together explicitly:
class Conjunction::Nexus couple Foo, to: CommonMaterial couple Bar, to: CommonMaterial couple FooFlow, to: FooState, bidirectional: true end
Public Class Methods
conjugate(conjunctive, junction:)
click to toggle source
# File lib/conjunction/nexus.rb, line 19 def conjugate(conjunctive, junction:) _couplings[junction.try(:junction_key)][conjunctive] if couples?(junction) end
couples?(junction)
click to toggle source
# File lib/conjunction/nexus.rb, line 23 def couples?(junction) _couplings.key?(junction.try(:junction_key)) end
Private Class Methods
couple(conjunctive, to:, bidirectional: false)
click to toggle source
# File lib/conjunction/nexus.rb, line 29 def couple(conjunctive, to:, bidirectional: false) raise TypeError, "#{conjunctive} is not a valid conjunctive" unless conjunctive.respond_to?(:conjugate) raise TypeError, "#{to} is not a valid junction" unless to.respond_to?(:junction_key) if bidirectional raise TypeError, "#{conjunctive} is not a valid junction" unless conjunctive.respond_to?(:junction_key) _couplings[conjunctive.junction_key][to] = conjunctive end _couplings[to.junction_key][conjunctive] = to end