class SimpleFacade::Linking::LinkingObserver
Attributes
current_object[R]
previous_step[R]
reader[R]
Public Class Methods
new(reader = nil)
click to toggle source
# File lib/simple_facade/linking.rb, line 11 def initialize(reader = nil) @reader = reader end
Public Instance Methods
direct?()
click to toggle source
# File lib/simple_facade/linking.rb, line 27 def direct? reader == SimpleFacade::Linking::SUCCESSOR end
double?()
click to toggle source
# File lib/simple_facade/linking.rb, line 15 def double? reader.nil? end
link(current_object, next_object, predecessor, successor)
click to toggle source
# File lib/simple_facade/linking.rb, line 36 def link(current_object, next_object, predecessor, successor) return next_object if predecessor.nil? || current_object.nil? link_predecessor(current_object, next_object, predecessor) link_successor(current_object, next_object, successor) next_object end
link_predecessor(current_object, next_object, predecessor)
click to toggle source
# File lib/simple_facade/linking.rb, line 45 def link_predecessor(current_object, next_object, predecessor) return if single? && direct? next_object.singleton_class.class_eval do attr_accessor :predecessor end next_object.predecessor = predecessor next_object.singleton_class.class_eval do attr_accessor next_object.predecessor end next_object.public_send(:"#{next_object.predecessor}=", current_object) end
link_successor(current_object, next_object, successor)
click to toggle source
# File lib/simple_facade/linking.rb, line 57 def link_successor(current_object, next_object, successor) return if single? && reverse? current_object.singleton_class.class_eval do attr_accessor :successor end current_object.successor = successor current_object.singleton_class.class_eval do attr_accessor current_object.successor end current_object.public_send(:"#{current_object.successor}=", next_object) end
on_new_object(accessor, object)
click to toggle source
# File lib/simple_facade/linking.rb, line 31 def on_new_object(accessor, object) @current_object = link(@current_object, object, @previous_step, accessor) @previous_step = accessor end
reverse?()
click to toggle source
# File lib/simple_facade/linking.rb, line 23 def reverse? reader == SimpleFacade::Linking::PREDECESSOR end
single?()
click to toggle source
# File lib/simple_facade/linking.rb, line 19 def single? !double? end