Module: DefineEquality
- Defined in:
- lib/ruby_peter_v/define_equality.rb
Overview
Modified from the equitable function from ruby facets
github.com/rubyworks/facets/blob/master/lib/standard/facets/equitable.rb
Copyright © 2005,2010 Thomas Sawyer Licensed under the Ruby license and GPL license See github.com/rubyworks/facets/blob/master/LICENSE.txt
This modified version falls under the license for this package
Class Method Summary collapse
-
.identify(base, *accessors) ⇒ Object
NOTE added :class as a default accessor.
Instance Method Summary collapse
Class Method Details
.identify(base, *accessors) ⇒ Object
NOTE added :class as a default accessor
15 16 17 18 |
# File 'lib/ruby_peter_v/define_equality.rb', line 15 def self.identify(base, *accessors) base.send(:define_method, :equality_accessors){ [:class] + accessors } self end |
Instance Method Details
#==(o) ⇒ Object
20 21 22 |
# File 'lib/ruby_peter_v/define_equality.rb', line 20 def ==(o) equality_accessors.all?{ |a| send(a) == o.send(a) } end |
#eql?(o) ⇒ Boolean
24 25 26 |
# File 'lib/ruby_peter_v/define_equality.rb', line 24 def eql?(o) equality_accessors.all?{ |a| send(a).eql?(o.send(a)) } end |
#hash ⇒ Object
28 29 30 |
# File 'lib/ruby_peter_v/define_equality.rb', line 28 def hash equality_accessors.inject(0){ |acc, a| acc ^ send(a).hash } end |