Class: Glimmer::DataBinding::ElementBinding

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(element, property, translator = nil) ⇒ ElementBinding

Returns a new instance of ElementBinding.



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

def initialize(element, property, translator = nil)
  @element = element
  @property = property
  @translator = translator

  # TODO implement automatic cleanup upon calling element.remove
  # Alternatively, have this be built into ElementProxy and remove this code
#         if @element.respond_to?(:dispose)
#           @element.on_widget_disposed do |dispose_event|
#             unregister_all_observables
#           end
#         end
end

Instance Attribute Details

#elementObject (readonly)

Returns the value of attribute element.



10
11
12
# File 'lib/glimmer/data_binding/element_binding.rb', line 10

def element
  @element
end

#propertyObject (readonly)

Returns the value of attribute property.



10
11
12
# File 'lib/glimmer/data_binding/element_binding.rb', line 10

def property
  @property
end

Instance Method Details

#call(value) ⇒ Object



25
26
27
28
29
# File 'lib/glimmer/data_binding/element_binding.rb', line 25

def call(value)
  evaluated_property_value = evaluate_property
  converted_value = @translator&.call(value, evaluated_property_value) || value
  @element.send("#{@property}=", converted_value) unless converted_value == evaluated_property_value
end

#evaluate_propertyObject



31
32
33
# File 'lib/glimmer/data_binding/element_binding.rb', line 31

def evaluate_property
  @element.send(@property)
end