Class: Glimmer::DataBinding::WidgetBinding

Inherits:
Object
  • Object
show all
Includes:
Glimmer, Observable, Observer
Defined in:
lib/glimmer/data_binding/widget_binding.rb

Constant Summary

Constants included from Glimmer

REGEX_METHODS_EXCLUDED

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Observer

#add_dependent, #dependents, #dependents_for, proc, #register, #registration_for, #registrations, #remove_dependent, #unregister, #unregister_all_observables, #unregister_dependents_with_observable

Methods included from Observable

#add_observer, #inspect, #remove_observer

Methods included from Glimmer

included, #method_missing

Constructor Details

#initialize(model, property, translator = nil) ⇒ WidgetBinding

Returns a new instance of WidgetBinding.



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/glimmer/data_binding/widget_binding.rb', line 13

def initialize(model, property, translator = nil)
  @widget = model
  @property = property
  @translator = translator || proc {|value| value}

  if @widget.respond_to?(:dispose)
    @widget.on_widget_disposed do |dispose_event|
      unregister_all_observables
    end
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Glimmer

Instance Attribute Details

#propertyObject (readonly)

Returns the value of attribute property.



12
13
14
# File 'lib/glimmer/data_binding/widget_binding.rb', line 12

def property
  @property
end

#widgetObject (readonly)

Returns the value of attribute widget.



12
13
14
# File 'lib/glimmer/data_binding/widget_binding.rb', line 12

def widget
  @widget
end

Instance Method Details

#call(value) ⇒ Object



24
25
26
27
# File 'lib/glimmer/data_binding/widget_binding.rb', line 24

def call(value)
  converted_value = translated_value = @translator.call(value)
  @widget.set_attribute(@property, converted_value) unless evaluate_property == converted_value
end

#evaluate_propertyObject



28
29
30
# File 'lib/glimmer/data_binding/widget_binding.rb', line 28

def evaluate_property
  @widget.get_attribute(@property)
end