lib/clomp/track.rb in clomp-0.0.7 vs lib/clomp/track.rb in clomp-0.0.8
- old
+ new
@@ -1,51 +1,61 @@
module Clomp
class Track
include Clomp::CommonStates
- attr_reader :name, :block, :track_options, :state, :error, :track_from, :type
+ attr_reader :name, :block, :track_options, :state, :error, :track_from, :left, :right
+ attr_accessor :executed
VALID_TRACK_TYPES = %I(track failed_track finally catch)
- def initialize(name: (raise Errors::NoTrackProvided), track_options: {}, track_type: VALID_TRACK_TYPES.first, track_from: nil, &block)
- raise UnknownTrackType, 'Please provide a valid track type' unless VALID_TRACK_TYPES.include?(track_type)
-
+ def initialize(name: (raise Errors::NoTrackProvided), track_options: {}, right: true, track_from: nil, &block)
@name = name
@track_from = track_from
@block = block
@track_options = track_options
- @type = track_type
@state = 'pending'
@error = nil
+ @right = true
+ @executed = false
end
+ def executed?
+ @executed == true
+ end
+
def type
- @type
+ @right ? :right_track : :left_track
end
- VALID_TRACK_TYPES.each do |track_type|
- define_method "#{track_type}?" do
- @type == track_type
- end
+ alias_method :track?, :type
+
+ def left_track?
+ !right_track?
end
+ def right_track?
+ @right
+ end
+
# Track#exec! executes the steps defined in the operation class
def exec!(object, options)
mark_as_failure! # going to execute! set to failure initially
if object.method(name.to_sym).arity > 1
mark_as_success! if object.public_send(name.to_sym, options, **options) != false
else
mark_as_success! if object.public_send(name.to_sym, options) != false
end
- @block.(options) if failure? && @block
+ @block.(options) if success? && @block
self
rescue => e
@error = e.message
-
+
+ pp @error
+
mark_as_failure!
self
end
end
\ No newline at end of file