Sha256: 7ab4d84e7733509289a13d72cfd976fbd240d7f8802a27cc7a6bbb5d8c877922
Contents?: true
Size: 1.57 KB
Versions: 2
Compression:
Stored size: 1.57 KB
Contents
module Clomp class Result attr_reader :options, :operation, :state def initialize(options: {}, tracks: [], operation: nil) @report = {} @operation = set_prop :operation, operation || Operation.new @tracks = set_prop :tracks, tracks || [] @options ||= {} @immutable_data = set_prop :options, options @state = ->(tracks) {tracks.select {|track| track.failure?}.count.zero?} end def data options[:mutable_data] end def immutable_data options[:immutable_data] end def success? @state.(self[:tracks]) === true end def failure? @state.(self[:tracks]) === false end def state_statement success? ? 'Successful' : 'Failure' end def to_s "#{self.class.name} > #{state_statement}: #{executed_tracks}" end def method_missing(method, *args) if @operation.respond_to?(method) @operation.send(method, *args) else super end end def [](key) sym_key = to_sym_key(key) self.instance_variable_get(sym_key) end def []=(key, value) sym_key = to_sym_key(key) self.instance_variable_set(sym_key, value) end def set_prop(key, value) sym_key = to_sym_key(key) self.instance_variable_set(sym_key, value) end private def to_sym_key(key) if key.is_a? Symbol ('@' + key.to_s).to_sym else ('@' + key.to_s.delete('@')).to_sym end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
clomp-0.0.8 | lib/clomp/result.rb |
clomp-0.0.7 | lib/clomp/result.rb |