Class: Igniter::Extensions::Contracts::Incremental::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/igniter/extensions/contracts/incremental/result.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(execution_result:, changed_nodes:, skipped_nodes:, backdated_nodes:, changed_outputs:, recomputed_count:) ⇒ Result

Returns a new instance of Result.



11
12
13
14
15
16
17
18
19
20
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 11

def initialize(execution_result:, changed_nodes:, skipped_nodes:, backdated_nodes:, changed_outputs:,
               recomputed_count:)
  @execution_result = execution_result
  @changed_nodes = changed_nodes.freeze
  @skipped_nodes = skipped_nodes.freeze
  @backdated_nodes = backdated_nodes.freeze
  @changed_outputs = changed_outputs.freeze
  @recomputed_count = recomputed_count
  freeze
end

Instance Attribute Details

#backdated_nodesObject (readonly)

Returns the value of attribute backdated_nodes.



8
9
10
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 8

def backdated_nodes
  @backdated_nodes
end

#changed_nodesObject (readonly)

Returns the value of attribute changed_nodes.



8
9
10
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 8

def changed_nodes
  @changed_nodes
end

#changed_outputsObject (readonly)

Returns the value of attribute changed_outputs.



8
9
10
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 8

def changed_outputs
  @changed_outputs
end

#execution_resultObject (readonly)

Returns the value of attribute execution_result.



8
9
10
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 8

def execution_result
  @execution_result
end

#recomputed_countObject (readonly)

Returns the value of attribute recomputed_count.



8
9
10
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 8

def recomputed_count
  @recomputed_count
end

#skipped_nodesObject (readonly)

Returns the value of attribute skipped_nodes.



8
9
10
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 8

def skipped_nodes
  @skipped_nodes
end

Instance Method Details

#explainObject Also known as: to_s



39
40
41
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 39

def explain
  Formatter.format(self)
end

#fully_memoized?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 26

def fully_memoized?
  recomputed_count.zero?
end

#output(name) ⇒ Object



45
46
47
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 45

def output(name)
  execution_result.output(name)
end

#outputs_changed?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 22

def outputs_changed?
  changed_outputs.any?
end

#summaryObject



30
31
32
33
34
35
36
37
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 30

def summary
  parts = []
  parts << "#{changed_nodes.length} changed" if changed_nodes.any?
  parts << "#{skipped_nodes.length} skipped" if skipped_nodes.any?
  parts << "#{backdated_nodes.length} backdated" if backdated_nodes.any?
  parts << "#{recomputed_count} recomputed"
  parts.join(", ")
end

#to_hObject



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/igniter/extensions/contracts/incremental/result.rb', line 49

def to_h
  {
    changed_nodes: changed_nodes,
    skipped_nodes: skipped_nodes,
    backdated_nodes: backdated_nodes,
    changed_outputs: changed_outputs,
    recomputed_count: recomputed_count,
    outputs_changed: outputs_changed?,
    fully_memoized: fully_memoized?,
    execution_result: execution_result.to_h
  }
end