class FunctionalLightService::Context
rubocop:disable ClassLength
Attributes
current_action[RW]
outcome[RW]
Public Class Methods
make(context = {})
click to toggle source
# File lib/functional-light-service/context.rb, line 15 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
new(context = {}, outcome = Success(:message => '', :error => nil))
click to toggle source
# 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
Public Instance Methods
[](key)
click to toggle source
Calls superclass method
# File lib/functional-light-service/context.rb, line 123 def [](key) key = aliases.key(key) || key return super(key) end
add_to_context(values)
click to toggle source
# File lib/functional-light-service/context.rb, line 27 def add_to_context(values) merge! values end
aliases()
click to toggle source
# File lib/functional-light-service/context.rb, line 119 def aliases @aliases ||= {} end
assign_aliases(aliases)
click to toggle source
# File lib/functional-light-service/context.rb, line 111 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)
click to toggle source
# File lib/functional-light-service/context.rb, line 100 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()
click to toggle source
# File lib/functional-light-service/context.rb, line 52 def error_code @outcome.value.dig(:error) end
fail!(message = nil, options_or_error_code = {})
click to toggle source
# File lib/functional-light-service/context.rb, line 63 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)
click to toggle source
# File lib/functional-light-service/context.rb, line 81 def fail_and_return!(*args) fail!(*args) throw(:jump_when_failed, *args) end
fail_with_rollback!(message = nil, error_code = nil)
click to toggle source
# File lib/functional-light-service/context.rb, line 86 def fail_with_rollback!(message = nil, error_code = nil) fail!(message, error_code) raise FailWithRollbackError end
failure?()
click to toggle source
# File lib/functional-light-service/context.rb, line 35 def failure? @outcome.failure? end
fetch(key, default = nil, &blk)
click to toggle source
Calls superclass method
# File lib/functional-light-service/context.rb, line 128 def fetch(key, default = nil, &blk) self[key] ||= if block_given? super(key, &blk) else super end end
inspect()
click to toggle source
# File lib/functional-light-service/context.rb, line 136 def inspect "#{self.class}(#{self}, " \ + "success: #{success?}, " \ + "message: #{check_nil(message)}, " \ + "error_code: #{check_nil(error_code)}, " \ + "skip_remaining: #{@skip_remaining}, " \ + "aliases: #{@aliases}" \ + ")" end
message()
click to toggle source
# File lib/functional-light-service/context.rb, line 48 def message @outcome.value.dig(:message) end
reset_skip_remaining!()
click to toggle source
# File lib/functional-light-service/context.rb, line 43 def reset_skip_remaining! @outcome = Success(:message => '', :error => nil) @skip_remaining = false end
skip_remaining!(message = nil)
click to toggle source
# File lib/functional-light-service/context.rb, line 91 def skip_remaining!(message = nil) @outcome = Success(:message => message) @skip_remaining = true end
skip_remaining?()
click to toggle source
# File lib/functional-light-service/context.rb, line 39 def skip_remaining? @skip_remaining end
stop_processing?()
click to toggle source
# File lib/functional-light-service/context.rb, line 96 def stop_processing? failure? || skip_remaining? end
succeed!(message = nil, options = {})
click to toggle source
# File lib/functional-light-service/context.rb, line 56 def succeed!(message = nil, options = {}) message = Configuration.localization_adapter.success(message, current_action, options) @outcome = Success(:message => message) end
success?()
click to toggle source
# File lib/functional-light-service/context.rb, line 31 def success? @outcome.success? end
Private Instance Methods
check_nil(value)
click to toggle source
# File lib/functional-light-service/context.rb, line 148 def check_nil(value) return 'nil' unless value "'#{value}'" end