Sha256: b6de166deb1d1e9f92c07a832f6d5eb0c3e99b158f5b790f365393dfbef3ae9b

Contents?: true

Size: 458 Bytes

Versions: 3

Compression:

Stored size: 458 Bytes

Contents

class Module

  # Note: This may be better off as a paramerterized module.
  def key_attributes(*fields)
    code = ""
    code << "def ==(o) " << fields.map {|f| "self.#{f} == o.#{f}" }.join(" && ") << " end\n"
    code << "def eql?(o) " << fields.map {|f| "self.#{f}.eql?(o.#{f})" }.join(" && ") << " end\n"
    code << "def hash() " << fields.map {|f| "self.#{f}.hash" }.join(" ^ ") << " end\n"
    # puts code
    class_eval code
    fields
  end

end 

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
facets-0.7.0 lib/facet/module/key_attributes.rb
facets-0.7.1 lib/facet/module/key_attributes.rb
facets-0.7.2 lib/facet/module/key_attributes.rb