Class: Alf::Engine::Defaults

Inherits:
Object
  • Object
show all
Includes:
Cog
Defined in:
lib/alf-engine/alf/engine/defaults.rb

Overview

Replace missing attributes and nil by default, computed values.

Example:

rel = [
  {:id => 1, :name => "Jones"},
  {:id => 2, :name => nil}
]
Defaults.new(rel, TupleComputation[:name => "Smith"]).to_a
# => [
#      {:id => 1, :name => "Jones"},
#      {:id => 2, :name => "Smith"}
#    ]

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Cog

#each, #to_dot, #to_relation

Constructor Details

#initialize(operand, defaults) ⇒ Defaults

Creates a Defaults instance



28
29
30
31
# File 'lib/alf-engine/alf/engine/defaults.rb', line 28

def initialize(operand, defaults)
  @operand = operand
  @defaults = defaults
end

Instance Attribute Details

#defaultsTupleComputation (readonly)

Returns The default values.

Returns:

  • (TupleComputation)

    The default values



25
26
27
# File 'lib/alf-engine/alf/engine/defaults.rb', line 25

def defaults
  @defaults
end

#operandEnumerable (readonly)

Returns The operand.

Returns:

  • (Enumerable)

    The operand



22
23
24
# File 'lib/alf-engine/alf/engine/defaults.rb', line 22

def operand
  @operand
end

Instance Method Details

#_eachObject



34
35
36
37
38
39
40
# File 'lib/alf-engine/alf/engine/defaults.rb', line 34

def _each
  scope = tuple_scope
  operand.each do |tuple|
    defs = @defaults.evaluate(scope.__set_tuple(tuple))
    yield tuple.merge(defs){|k,v1,v2| (v1.nil? ? v2 : v1)}
  end
end