Sha256: 714e617cddc1d3b1707929ddd11abf7826cfc9ed3460604fb12e78f52e3f046e

Contents?: true

Size: 938 Bytes

Versions: 15

Compression:

Stored size: 938 Bytes

Contents

# -*- coding: utf-8 -*-


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

15 entries across 15 versions & 1 rubygems

Version Path
reflexion-0.1.21 lib/reflex/model_owner.rb
reflexion-0.1.20 lib/reflex/model_owner.rb
reflexion-0.1.19 lib/reflex/model_owner.rb
reflexion-0.1.17 lib/reflex/model_owner.rb
reflexion-0.1.16 lib/reflex/model_owner.rb
reflexion-0.1.15 lib/reflex/model_owner.rb
reflexion-0.1.14 lib/reflex/model_owner.rb
reflexion-0.1.13 lib/reflex/model_owner.rb
reflexion-0.1.12 lib/reflex/model_owner.rb
reflexion-0.1.11 lib/reflex/model_owner.rb
reflexion-0.1.10 lib/reflex/model_owner.rb
reflexion-0.1.9.1 lib/reflex/model_owner.rb
reflexion-0.1.9 lib/reflex/model_owner.rb
reflexion-0.1.8 lib/reflex/model_owner.rb
reflexion-0.1.7 lib/reflex/model_owner.rb