Sha256: 6b271b3b232413ec95f67ecc6597c42ed699f5eae61b02587218d338c05e6020

Contents?: true

Size: 620 Bytes

Versions: 10

Compression:

Stored size: 620 Bytes

Contents

class SiteHub
  module Equality
    module ClassMethods
      def transient_fields
        @transient_fields ||= []
      end

      def transient(*fields)
        transient_fields.concat(fields.collect { |field| "@#{field}".to_sym })
      end
    end
    def self.included(clazz)
      clazz.extend(ClassMethods)
    end

    def ==(other)
      fields = instance_variables.find_all { |field| !_clazz.transient_fields.include?(field) }
      fields.all? do |variable|
        instance_variable_get(variable) == other.instance_variable_get(variable)
      end
    end

    def _clazz
      self.class
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
sitehub-0.5.0.alpha12 lib/sitehub/equality.rb
sitehub-0.5.0.alpha11 lib/sitehub/equality.rb
sitehub-0.5.0.alpha10 lib/sitehub/equality.rb
sitehub-0.5.0.alpha8 lib/sitehub/equality.rb
sitehub-0.5.0.alpha7 lib/sitehub/equality.rb
sitehub-0.5.0.alpha6 lib/sitehub/equality.rb
sitehub-0.5.0.alpha5 lib/sitehub/equality.rb
sitehub-0.5.0.alpha4 lib/sitehub/equality.rb
sitehub-0.5.0.alpha3 lib/sitehub/equality.rb
sitehub-0.5.0.alpha2 lib/sitehub/equality.rb