class Object

Public Instance Methods

__properties__() click to toggle source
# File lib/properties.rb, line 39
def __properties__
 @__properties__
end
collection(name, kind) click to toggle source
# File lib/properties.rb, line 84
def collection name, kind
  property name, kind, true
end
property(name, kind, is_collection = false) click to toggle source
# File lib/properties.rb, line 32
def property name, kind, is_collection = false
  classname = eval kind.to_s.camelcase

  @__properties__ ||= {}
  @__properties__[name] = Properties::Property.new(name, kind, is_collection)
  @is_collection = is_collection
 
  def __properties__
   @__properties__
  end
 

  if is_collection
    code = "
      def #{name}
        @#{name} ||= []
        @#{name}
      end
    " 
    eval code

    code = "
      def #{name}=(values)
        values ||= []
        values.each do |value|
          raise Properties::PropertyError.new(\"Can't set value (\#{value.inspect}) to property #{name} since not all elements are a #{classname}\") if not value.kind_of?(#{classname})
        end

        @#{name} = values
      end
    "
    eval code

  else
    code = "
      def #{name}
        @#{name}
      end
    " 
    eval code

    code = "
      def #{name}=(value)
        raise Properties::PropertyError.new(\"Can't set value (\#{value}.inspect) to property #{name} since it's not a #{classname}\") if not value.kind_of?(#{classname})
        @#{name} = value
      end
    "
    eval code
  end
  
end