Class: Porch::Context
- Inherits:
-
Hash
- Object
- Hash
- Porch::Context
show all
- Includes:
- GuardRail
- Defined in:
- lib/porch/context.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from GuardRail
#guard
Constructor Details
#initialize(context = {}, success = true) ⇒ Context
Returns a new instance of Context.
9
10
11
12
13
14
|
# File 'lib/porch/context.rb', line 9
def initialize(context={}, success=true)
@message = nil
@success = success
@skip_remaining = false
deep_duplicate(context)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
42
43
44
45
|
# File 'lib/porch/context.rb', line 42
def method_missing(name, *args, &block)
return fetch(name) if key?(name)
super
end
|
Instance Attribute Details
#message ⇒ Object
Returns the value of attribute message.
7
8
9
|
# File 'lib/porch/context.rb', line 7
def message
@message
end
|
Instance Method Details
#deep_dup ⇒ Object
16
17
18
|
# File 'lib/porch/context.rb', line 16
def deep_dup
self.class.new(self, self.success?)
end
|
#fail!(message = "") ⇒ Object
20
21
22
23
24
|
# File 'lib/porch/context.rb', line 20
def fail!(message="")
@message = message
@success = false
raise Porch::ContextStoppedError.new(self)
end
|
#failure? ⇒ Boolean
26
27
28
|
# File 'lib/porch/context.rb', line 26
def failure?
!success?
end
|
#guard_with_failure(&block) ⇒ Object
36
37
38
39
40
|
# 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) ⇒ Object
30
31
32
33
34
|
# File 'lib/porch/context.rb', line 30
def guard_with_skipping(&block)
result = guard &block
skip_remaining! if result.failure?
result
end
|
#skip_next(&block) ⇒ Object
47
48
49
50
51
|
# 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! ⇒ Object
57
58
59
60
|
# File 'lib/porch/context.rb', line 57
def skip_remaining!
@skip_remaining = true
raise Porch::ContextStoppedError.new(self)
end
|
#skip_remaining? ⇒ Boolean
53
54
55
|
# File 'lib/porch/context.rb', line 53
def skip_remaining?
!!@skip_remaining
end
|
#stop_processing? ⇒ Boolean
66
67
68
|
# File 'lib/porch/context.rb', line 66
def stop_processing?
failure? || skip_remaining?
end
|
#success? ⇒ Boolean
62
63
64
|
# File 'lib/porch/context.rb', line 62
def success?
@success
end
|