module Loco::Observable::ClassMethods

Public Instance Methods

get_class_bindings() click to toggle source

An array of the model’s bindings @return [Array]

# File lib/motion-loco/observable.rb, line 160
def get_class_bindings
  if @class_bindings.nil?
    @class_bindings = []
    if self.superclass.respond_to? :get_class_bindings
      @class_bindings.concat(self.superclass.get_class_bindings)
    end
  end
  @class_bindings
end
get_class_properties() click to toggle source

An array of the model’s properties used for saving the record @return [Array]

# File lib/motion-loco/observable.rb, line 173
def get_class_properties
  if @class_properties.nil?
    @class_properties = []
    if self.superclass.respond_to? :get_class_properties
      @class_properties.concat(self.superclass.get_class_properties)
    end
  end
  @class_properties
end
get_class_relationships() click to toggle source
# File lib/motion-loco/observable.rb, line 183
def get_class_relationships
  if @class_relationships.nil?
    @class_relationships = []
    if self.superclass.respond_to? :get_class_relationships
      @class_relationships.concat(self.superclass.get_class_relationships)
    end
  end
  @class_relationships
end
observer(name, proc) click to toggle source
# File lib/motion-loco/observable.rb, line 153
def observer(name, proc)
  @class_bindings = get_class_bindings
  @class_bindings << { proc: proc }
end
property(name, type=nil) click to toggle source
# File lib/motion-loco/observable.rb, line 134
def property(name, type=nil)
  name = name.to_sym
  @class_properties = get_class_properties
  
  unless @class_properties.include? name
    attr_accessor name
    alias_method name.to_s.camelize(:lower), name
    alias_method "#{name.to_s.camelize(:lower)}=", "#{name}="
  end
  
  if type.is_a? Proc
    @class_bindings = get_class_bindings
    @class_bindings << { name: name, proc: type }
  else
    type = type.to_sym unless type.nil?
    @class_properties << { name: name, type: type }
  end
end