class Clomp::Result

Attributes

operation[R]
state[R]

Public Class Methods

new(options: {}, tracks: [], operation: nil) click to toggle source
# File lib/clomp/result.rb, line 5
def initialize(options: {}, tracks: [], operation: nil)
  @report         = {}
  @operation      = set_prop :operation, operation || Operation.new
  @tracks         = set_prop :tracks, tracks || []
  @options        = Option.new
  @immutable_data = set_prop :options, options
  @state          = ->(tracks) { tracks.select {|track| track.failure?}.count.zero? }
end

Public Instance Methods

[](key) click to toggle source
# File lib/clomp/result.rb, line 50
def [](key)
  sym_key = to_sym_key(key)
  
  self.instance_variable_get(sym_key)
end
[]=(key, value) click to toggle source
# File lib/clomp/result.rb, line 56
def []=(key, value)
  sym_key = to_sym_key(key)
  self.instance_variable_set(sym_key, value)
end
data() click to toggle source
# File lib/clomp/result.rb, line 18
def data
  options[:mutable_data]
end
failure?() click to toggle source
# File lib/clomp/result.rb, line 30
def failure?
  @state.(self[:tracks]) === false
end
immutable_data() click to toggle source
# File lib/clomp/result.rb, line 22
def immutable_data
  options[:immutable_data]
end
method_missing(method, *args) click to toggle source
Calls superclass method
# File lib/clomp/result.rb, line 42
def method_missing(method, *args)
  if @operation.respond_to?(method)
    @operation.send(method, *args)
  else
    super
  end
end
options=(options = Option.new) click to toggle source
# File lib/clomp/result.rb, line 14
def options=(options = Option.new)
  @options = options
end
set_prop(key, value) click to toggle source
# File lib/clomp/result.rb, line 61
def set_prop(key, value)
  sym_key = to_sym_key(key)
  
  self.instance_variable_set(sym_key, value)
end
state_statement() click to toggle source
# File lib/clomp/result.rb, line 34
def state_statement
  success? ? 'Successful' : 'Failure'
end
success?() click to toggle source
# File lib/clomp/result.rb, line 26
def success?
  @state.(self[:tracks]) === true
end
to_s() click to toggle source
# File lib/clomp/result.rb, line 38
def to_s
  "#{self.class.name} > #{state_statement}: #{executed_tracks}"
end

Private Instance Methods

to_sym_key(key) click to toggle source
# File lib/clomp/result.rb, line 69
def to_sym_key(key)
  if key.is_a? Symbol
    ('@' + key.to_s).to_sym
  else
    ('@' + key.to_s.delete('@')).to_sym
  end
end