Class: Axiom::Relation::Operation::Unwrap

Inherits:
Axiom::Relation show all
Includes:
Unary
Defined in:
lib/axiom/relation/operation/unwrap.rb

Overview

A class representing a unwrapped relation

Defined Under Namespace

Modules: Methods

Instance Attribute Summary collapse

Attributes included from Operation::Unary

#operand

Attributes inherited from Axiom::Relation

#header

Instance Method Summary collapse

Methods inherited from Axiom::Relation

#==, #[], #directions, #empty?, #include?, #materialize, #materialized?, new, #replace

Methods included from Visitable

#accept

Constructor Details

#initialize(operand, name) ⇒ undefined

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Initialize a unwrapped relation

Parameters:



28
29
30
31
32
33
# File 'lib/axiom/relation/operation/unwrap.rb', line 28

def initialize(operand, name)
  super(operand)
  @attribute = header[name]
  @outer     = header - [attribute]
  @header    = @outer.extend(attribute.header)
end

Instance Attribute Details

#attributeAttribute::Relation (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

The unwrapped attribute

Returns:



17
18
19
# File 'lib/axiom/relation/operation/unwrap.rb', line 17

def attribute
  @attribute
end

Instance Method Details

#each {|tuple| ... } ⇒ self

Iterate over each tuple in the set

Examples:

unwrapped = Unwrap.new(left, right)
unwrapped.each { |tuple| ... }

Yields:

  • (tuple)

Yield Parameters:

  • tuple (Tuple)

    each tuple in the set

Returns:

  • (self)


49
50
51
52
53
54
55
# File 'lib/axiom/relation/operation/unwrap.rb', line 49

def each
  return to_enum unless block_given?
  operand.each do |tuple|
    yield tuple.project(@outer).join(header, tuple[attribute])
  end
  self
end