Class: FunctionalLightService::Context
Overview
rubocop:disable ClassLength
Defined Under Namespace
Classes: ExpectedKeyVerifier, KeyVerifier, PromisedKeyVerifier, ReservedKeysVerifier
Constant Summary
Prelude::Option::None, Prelude::Option::Option
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#Failure, #Success, #try!
#None, #Option, #Some
Constructor Details
#initialize(context = {}, outcome = Success(:message => '', :error => nil)) ⇒ Context
Returns a new instance of Context.
8
9
10
11
12
|
# File 'lib/functional-light-service/context.rb', line 8
def initialize(context = {}, outcome = Success(:message => '', :error => nil))
@outcome = outcome
@skip_remaining = false
context.to_hash.each { |k, v| self[k] = v }
end
|
Instance Attribute Details
#current_action ⇒ Object
Returns the value of attribute current_action.
6
7
8
|
# File 'lib/functional-light-service/context.rb', line 6
def current_action
@current_action
end
|
Returns the value of attribute outcome.
6
7
8
|
# File 'lib/functional-light-service/context.rb', line 6
def outcome
@outcome
end
|
Class Method Details
.make(context = {}) ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/functional-light-service/context.rb', line 14
def self.make(context = {})
unless context.is_a?(Hash) || context.is_a?(FunctionalLightService::Context)
msg = 'Argument must be Hash or FunctionalLightService::Context'
raise ArgumentError, msg
end
context = new(context) unless context.is_a?(Context)
context.assign_aliases(context.delete(:_aliases)) if context[:_aliases]
context
end
|
Instance Method Details
122
123
124
125
|
# File 'lib/functional-light-service/context.rb', line 122
def [](key)
key = aliases.key(key) || key
return super(key)
end
|
#add_to_context(values) ⇒ Object
26
27
28
|
# File 'lib/functional-light-service/context.rb', line 26
def add_to_context(values)
merge! values
end
|
118
119
120
|
# File 'lib/functional-light-service/context.rb', line 118
def aliases
@aliases ||= {}
end
|
#assign_aliases(aliases) ⇒ Object
110
111
112
113
114
115
116
|
# File 'lib/functional-light-service/context.rb', line 110
def assign_aliases(aliases)
@aliases = aliases
aliases.each_pair do |key, key_alias|
self[key_alias] = self[key]
end
end
|
#define_accessor_methods_for_keys(keys) ⇒ Object
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/functional-light-service/context.rb', line 99
def define_accessor_methods_for_keys(keys)
return if keys.nil?
keys.each do |key|
next if respond_to?(key.to_sym)
define_singleton_method(key.to_s) { fetch(key) }
define_singleton_method("#{key}=") { |value| self[key] = value }
end
end
|
#error_code ⇒ Object
51
52
53
|
# File 'lib/functional-light-service/context.rb', line 51
def error_code
@outcome.value.dig(:error)
end
|
#fail!(message = nil, options_or_error_code = {}) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/functional-light-service/context.rb', line 62
def fail!(message = nil, options_or_error_code = {})
options_or_error_code ||= {}
if options_or_error_code.is_a?(Hash)
error_code = options_or_error_code.delete(:error_code)
options = options_or_error_code
else
error_code = options_or_error_code
options = {}
end
message = Configuration.localization_adapter.failure(message,
current_action,
options)
@outcome = Failure(:message => message, :error => error_code)
end
|
#fail_and_return!(*args) ⇒ Object
80
81
82
83
|
# File 'lib/functional-light-service/context.rb', line 80
def fail_and_return!(*args)
fail!(*args)
throw(:jump_when_failed)
end
|
#fail_with_rollback!(message = nil, error_code = nil) ⇒ Object
85
86
87
88
|
# File 'lib/functional-light-service/context.rb', line 85
def fail_with_rollback!(message = nil, error_code = nil)
fail!(message, error_code)
raise FailWithRollbackError
end
|
#failure? ⇒ Boolean
34
35
36
|
# File 'lib/functional-light-service/context.rb', line 34
def failure?
@outcome.failure?
end
|
#fetch(key, default = nil, &blk) ⇒ Object
127
128
129
130
131
132
133
|
# File 'lib/functional-light-service/context.rb', line 127
def fetch(key, default = nil, &blk)
self[key] ||= if block_given?
super(key, &blk)
else
super
end
end
|
135
136
137
138
139
140
141
142
143
|
# File 'lib/functional-light-service/context.rb', line 135
def inspect
"#{self.class}(#{self}, " \
+ "success: #{success?}, " \
+ "message: #{check_nil(message)}, " \
+ "error_code: #{check_nil(error_code)}, " \
+ "skip_remaining: #{@skip_remaining}, " \
+ "aliases: #{@aliases}" \
+ ")"
end
|
47
48
49
|
# File 'lib/functional-light-service/context.rb', line 47
def message
@outcome.value.dig(:message)
end
|
#reset_skip_remaining! ⇒ Object
42
43
44
45
|
# File 'lib/functional-light-service/context.rb', line 42
def reset_skip_remaining!
@outcome = Success(:message => '', :error => nil)
@skip_remaining = false
end
|
#skip_remaining!(message = nil) ⇒ Object
90
91
92
93
|
# File 'lib/functional-light-service/context.rb', line 90
def skip_remaining!(message = nil)
@outcome = Success(:message => message)
@skip_remaining = true
end
|
#skip_remaining? ⇒ Boolean
38
39
40
|
# File 'lib/functional-light-service/context.rb', line 38
def skip_remaining?
@skip_remaining
end
|
#stop_processing? ⇒ Boolean
95
96
97
|
# File 'lib/functional-light-service/context.rb', line 95
def stop_processing?
failure? || skip_remaining?
end
|
#succeed!(message = nil, options = {}) ⇒ Object
55
56
57
58
59
60
|
# File 'lib/functional-light-service/context.rb', line 55
def succeed!(message = nil, options = {})
message = Configuration.localization_adapter.success(message,
current_action,
options)
@outcome = Success(:message => message)
end
|
#success? ⇒ Boolean
30
31
32
|
# File 'lib/functional-light-service/context.rb', line 30
def success?
@outcome.success?
end
|