class RuGUI::PropertyChangedSupport::PropertyChangedBlock
Attributes
block[RW]
observer[RW]
options[RW]
property[RW]
Public Instance Methods
call_property_changed_block_if_exists(observer, observable, property, new_value, old_value)
click to toggle source
Call the block configurated for the property changed if a block exists for the one.
# File lib/rugui/property_changed_support.rb, line 61 def call_property_changed_block_if_exists(observer, observable, property, new_value, old_value) self.observer = observer call_property_changed_block(observable, new_value, old_value) if block_exists?(observable, property, new_value, old_value) end
set_options(method_or_options)
click to toggle source
Set the options given the args.
# File lib/rugui/property_changed_support.rb, line 67 def set_options(method_or_options) case method_or_options when String, Symbol self.options = { :call => prepared(method_or_options) } when Hash self.options = method_or_options end end
Protected Instance Methods
block_exists?(observable, property, new_value, old_value)
click to toggle source
Check if a block exists for the property changed
# File lib/rugui/property_changed_support.rb, line 78 def block_exists?(observable, property, new_value, old_value) if self.options.has_key?(:observable) return same_observable_and_property?(observable, property) else return same_property?(property) end end
call_property_changed_block(observable, new_value, old_value)
click to toggle source
Call the block configurated for the property changed.
# File lib/rugui/property_changed_support.rb, line 87 def call_property_changed_block(observable, new_value, old_value) return if not self.options.has_key?(:call) and self.block.blank? if self.options.has_key?(:call) method = self.options[:call] self.observer.send(method, observable, new_value, old_value) if self.observer.respond_to?(method) else self.block.call(observable, new_value, old_value) unless self.block.blank? end end
Private Instance Methods
logger()
click to toggle source
# File lib/rugui/property_changed_support.rb, line 114 def logger @logger ||= RuGUILogger.logger end
prepared(param)
click to toggle source
# File lib/rugui/property_changed_support.rb, line 110 def prepared(param) param.to_s.downcase.underscore end
same_observable?(observable)
click to toggle source
# File lib/rugui/property_changed_support.rb, line 102 def same_observable?(observable) prepared(self.options[:observable]) == prepared(observable.class.name) end
same_observable_and_property?(observable, property)
click to toggle source
# File lib/rugui/property_changed_support.rb, line 106 def same_observable_and_property?(observable, property) same_observable?(observable) and same_property?(property) end
same_property?(property)
click to toggle source
# File lib/rugui/property_changed_support.rb, line 98 def same_property?(property) prepared(self.property) == prepared(property) end