class Porch::Context

Attributes

message[R]

Public Class Methods

new(context={}, success=true) click to toggle source
# File lib/porch/context.rb, line 9
def initialize(context={}, success=true)
  @message = nil
  @success = success
  @skip_remaining = false
  deep_duplicate(context)
end

Public Instance Methods

deep_dup() click to toggle source
# File lib/porch/context.rb, line 16
def deep_dup
  self.class.new(self, self.success?)
end
fail!(message="") click to toggle source
# File lib/porch/context.rb, line 20
def fail!(message="")
  @message = message
  @success = false
  raise Porch::ContextStoppedError.new(self)
end
failure?() click to toggle source
# File lib/porch/context.rb, line 26
def failure?
  !success?
end
guard_with_failure(&block) click to toggle source
# File lib/porch/context.rb, line 36
def guard_with_failure(&block)
  result = guard &block
  fail!(HumanError.new(result.errors).message) if result.failure?
  result
end
guard_with_skipping(&block) click to toggle source
# File lib/porch/context.rb, line 30
def guard_with_skipping(&block)
  result = guard &block
  skip_remaining! if result.failure?
  result
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/porch/context.rb, line 42
def method_missing(name, *args, &block)
  return fetch(name) if key?(name)
  super
end
skip_next(&block) click to toggle source
# File lib/porch/context.rb, line 47
def skip_next(&block)
  result = Guard.new(self).against(&block)
  raise Porch::ContextStoppedError.new(self) if result.failure?
  result
end
skip_remaining!() click to toggle source
# File lib/porch/context.rb, line 57
def skip_remaining!
  @skip_remaining = true
  raise Porch::ContextStoppedError.new(self)
end
skip_remaining?() click to toggle source
# File lib/porch/context.rb, line 53
def skip_remaining?
  !!@skip_remaining
end
stop_processing?() click to toggle source
# File lib/porch/context.rb, line 66
def stop_processing?
  failure? || skip_remaining?
end
success?() click to toggle source
# File lib/porch/context.rb, line 62
def success?
  @success
end

Private Instance Methods

deep_duplicate(context) click to toggle source
# File lib/porch/context.rb, line 72
def deep_duplicate(context)
  (context || {}).to_hash.each { |k, v| self[k] = v }
  self
end