Sha256: eee1cce275a26d4593fff4665358c96a7d16540f9002ea1475eb37a438f13060

Contents?: true

Size: 948 Bytes

Versions: 3

Compression:

Stored size: 948 Bytes

Contents

module SimpleMapper
  module SimpleModel
    def self.included(base)
      base.extend ClassMethods
    end

    def to_hash(options={})
      self.class.properties.inject({}) {|h,k| h[k] = instance_variable_get("@#{k}"); h}
    end

    def identifier
      instance_variable_get('@'+self.class.identifier)
    end

    def method_missing(method, *args)
      if self.class.properties.include?(method.to_s)
        instance_variable_get('@'+method.to_s)
      elsif method.to_s =~ /=$/ && self.class.properties.include?(method.to_s.gsub(/=/, ''))
        instance_variable_set('@'+method.to_s.gsub(/=/, ''), *args)
      else
        super
      end
    end

    module ClassMethods
      def properties(*properties)
        @properties = properties.collect {|e| e.to_s} if properties.length > 0
        @properties
      end
      def identifier(id=nil)
        @identifier = id.to_s unless id.nil?
        @identifier
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
simplemapper-0.0.2 lib/simple_mapper/default_plugins/simple_model.rb
simplemapper-0.0.4 lib/simple_mapper/default_plugins/simple_model.rb
simplemapper-0.0.1 lib/simple_mapper/default_plugins/simple_model.rb