Sha256: 7a78fb55f649b6e2a33cfd3fc71b230149ca0b87900289903c64825a6254c726

Contents?: true

Size: 1.39 KB

Versions: 22

Compression:

Stored size: 1.39 KB

Contents

module KalibroClient
  module Entities
    module Miscellaneous
      class Base
        def initialize(attributes={})
          attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) }
        end

        include HashConverters
        def to_hash(options={})
          hash = Hash.new
          excepts = options[:except].nil? ? [] : options[:except]

          fields.each do |field|
            hash = field_to_hash(field).merge(hash) if !excepts.include?(field)
          end

          hash
        end

        def self.to_object value
          value.kind_of?(Hash) ? new(value) : value
        end

        def ==(another)
          unless self.class == another.class
            return false
          end

          self.variable_names.each do |name|
            next if name == "created_at" or name == "updated_at"
            unless self.send("#{name}") == another.send("#{name}") then
              return false
            end
          end

          return true
        end

        protected

        def fields
          instance_variable_names.each.collect { |variable| variable.to_s.sub(/@/, '') }
        end

        def instance_variable_names
          instance_variables.map { |var| var.to_s }
        end

        def variable_names
          instance_variable_names.each.collect { |variable| variable.to_s.sub(/@/, '') }
        end

      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
kalibro_client-3.0.1 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-3.0.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-2.1.2 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-2.1.1 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-2.1.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-2.0.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-1.4.1 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-1.4.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-1.3.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-1.2.2 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-0.5.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-1.2.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-1.1.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-0.4.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-1.0.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-0.3.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-0.2.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-0.1.1 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-0.1.0 lib/kalibro_client/entities/miscellaneous/base.rb
kalibro_client-0.0.3 lib/kalibro_client/entities/miscellaneous/base.rb