Sha256: a83b663ed1dc55d5adc037bfba01014a3abfdd0704dcd5762ef8e052b2b7c8a6

Contents?: true

Size: 907 Bytes

Versions: 29

Compression:

Stored size: 907 Bytes

Contents

require 'reflex/model'


module Reflex


  module ModelOwner

    attr_reader :model

    def model=(model)
      return if model == @model
      @model.remove_handler self if @model
      @model = model
      @model.add_handler self    if @model
      model
    end

    def data=(data)
      unless data.nil?
        self.model = Model.new unless @model
        @model.data = data
      else
        self.model = nil
      end
      data
    end

    def data()
      @model ? @model.data : nil
    end

    def invoke(*args)
      @model.invoke(*args) if @model
    end

    def on_data_attach(e)
      invoke :update, {}, only: self
    end

    def on_data_detach(e)
      invoke :update, {}, only: self
    end

    [:int, :float, :string, :[], :[]=].each do |name|
      define_method name do |*args|
        @model ? @model.send(name, *args) : nil
      end
    end

  end# ModelOwner


end# Reflex

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
reflexion-0.3.4 lib/reflex/model_owner.rb
reflexion-0.3.3 lib/reflex/model_owner.rb
reflexion-0.3.2 lib/reflex/model_owner.rb
reflexion-0.3.1 lib/reflex/model_owner.rb
reflexion-0.3 lib/reflex/model_owner.rb
reflexion-0.2.1 lib/reflex/model_owner.rb
reflexion-0.2 lib/reflex/model_owner.rb
reflexion-0.1.57 lib/reflex/model_owner.rb
reflexion-0.1.56 lib/reflex/model_owner.rb
reflexion-0.1.55 lib/reflex/model_owner.rb
reflexion-0.1.54 lib/reflex/model_owner.rb
reflexion-0.1.53 lib/reflex/model_owner.rb
reflexion-0.1.52 lib/reflex/model_owner.rb
reflexion-0.1.51 lib/reflex/model_owner.rb
reflexion-0.1.50 lib/reflex/model_owner.rb
reflexion-0.1.49 lib/reflex/model_owner.rb
reflexion-0.1.48 lib/reflex/model_owner.rb
reflexion-0.1.47 lib/reflex/model_owner.rb
reflexion-0.1.46 lib/reflex/model_owner.rb
reflexion-0.1.45 lib/reflex/model_owner.rb