class Focus::Action
Public Instance Methods
call()
click to toggle source
This method is used internally and should not be used within actions.
# File lib/focus/action.rb, line 32 def call perform end
config()
click to toggle source
# File lib/focus/action.rb, line 36 def config ContextualConfiguration.new(context) end
error_message()
click to toggle source
# File lib/focus/action.rb, line 27 def error_message "#{self.class.to_s.split('::').last} failed" end
perform()
click to toggle source
# File lib/focus/action.rb, line 25 def perform; end
Private Instance Methods
_evaluate_step(klass, args)
click to toggle source
# File lib/focus/action.rb, line 67 def _evaluate_step(klass, args) action = klass.to_s.gsub(/^.*::/, "") step = "Running #{action}..." Focus::STDOUT.step(step, quiet: context.quiet) do result = klass.call(args) raise FailedActionError, _failed_action_error(result) unless result.success? end end
_failed_action_error(obj)
click to toggle source
# File lib/focus/action.rb, line 77 def _failed_action_error(obj) "#{obj.action}: #{obj.error}" end
break_seconds()
click to toggle source
# File lib/focus/action.rb, line 58 def break_seconds focus_seconds * 0.2 end
debug_output(*args)
click to toggle source
# File lib/focus/action.rb, line 81 def debug_output(*args) Focus::STDOUT.debug_output args end
fail_action!(opts = {})
click to toggle source
# File lib/focus/action.rb, line 62 def fail_action!(opts = {}) raise ArgumentError, "An `:error` key must be provided to fail an action" unless (opts.keys & [:error, "error"]).any? context.fail!(opts.merge(action: self.class.to_s.split("::").last)) end
focus_minutes()
click to toggle source
# File lib/focus/action.rb, line 46 def focus_minutes context.focus_minutes || context.minutes.to_i end
focus_seconds()
click to toggle source
# File lib/focus/action.rb, line 50 def focus_seconds context.minutes.to_f * 60 end
focus_target()
click to toggle source
# File lib/focus/action.rb, line 42 def focus_target context.focus_target || context.target || "?" end
seconds_focused()
click to toggle source
# File lib/focus/action.rb, line 54 def seconds_focused Time.now.to_i - context.focus_start end