Sha256: db847847f6eeaab4eb127d7d2a1363847c0dad0f293615f25f927bc627d82f50
Contents?: true
Size: 966 Bytes
Versions: 5
Compression:
Stored size: 966 Bytes
Contents
module Alf module Engine # # Filters tuples from `left` that match or do not match tuples from `right`. # class Semi::Hash < Cog # @return [Enumerable] The left operand attr_reader :left # @return [Enumerable] The right operand attr_reader :right # @return [Boolean] Match (true) or not match (false)? attr_reader :predicate # Creates a Semi::Hash instance def initialize(left, right, predicate) @left = left @right = right @predicate = predicate end # (see Cog#each) def each index = nil left.each do |left_tuple| index ||= Materialize::Hash.new(right, lambda{|t| AttrList.new(left_tuple.keys & t.keys) }).prepare if index[left_tuple, true].empty? != predicate yield left_tuple end end end end # class Semi::Hash end # module Engine end # module Alf
Version data entries
5 entries across 5 versions & 1 rubygems