lib/veritas/tuple.rb in veritas-0.0.6 vs lib/veritas/tuple.rb in veritas-0.0.7
- old
+ new
@@ -2,13 +2,15 @@
module Veritas
# A set of objects representing a unique fact in a relation
class Tuple
- extend Comparator
+ extend Aliasable, Comparator
include Immutable
+ inheritable_alias(:[] => :call)
+
compare :data
# The tuple header
#
# @return [Header]
@@ -39,19 +41,19 @@
end
# Lookup a value in the tuple given an attribute
#
# @example
- # value = tuple[attribute]
+ # value = tuple.call(attribute)
#
# @param [Attribute] attribute
#
# @return [Object]
#
# @api public
- def [](attribute)
- data.fetch(header[attribute])
+ def call(attribute)
+ data.fetch(header.call(attribute))
end
# Return a tuple with only the specified attributes
#
# @example
@@ -109,11 +111,11 @@
# @return [Function]
#
# @api private
def predicate
header.reduce(Function::Proposition::Tautology.instance) do |predicate, attribute|
- predicate.and(attribute.eq(self[attribute]))
+ predicate.and(attribute.eq(attribute.call(self)))
end
end
# Convert the Tuple into an Array
#
@@ -182,9 +184,9 @@
# @api private
def self.coerce(header, object)
object.kind_of?(Tuple) ? object : new(header, object)
end
- memoize :hash, :predicate, :to_ary
+ memoize :predicate, :to_ary
end # class Tuple
end # module Veritas