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