Sha256: af89dfa39de7530325b3f85eae10f294c0f3ce721eea5437c29f58b054e8e946

Contents?: true

Size: 1.06 KB

Versions: 16

Compression:

Stored size: 1.06 KB

Contents

require 'glimmer/data_binding/observable'
require 'glimmer/data_binding/observer'

module Glimmer
  module DataBinding
    class ElementBinding
      include Glimmer
      include Observable
      include Observer

      attr_reader :element, :property
      def initialize(element, property, translator = nil)
        @element = element
        @property = property
        @translator = translator || proc {|value| value}

        # 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
      
      def call(value)
        converted_value = translated_value = @translator.call(value, evaluate_property)
        @element.send("#{@property}=", converted_value) unless evaluate_property == converted_value
      end
      
      def evaluate_property
        @element.send(@property)
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
glimmer-dsl-web-0.3.1 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.3.0 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.2.8 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.2.7 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.2.4 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.2.3 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.2.2 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.2.0 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.1.1 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.1.0 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.0.12 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.0.11 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.0.10 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.0.9 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.0.8 lib/glimmer/data_binding/element_binding.rb
glimmer-dsl-web-0.0.7 lib/glimmer/data_binding/element_binding.rb