class Jet::Result

Attributes

context[R]
output[R]

Public Class Methods

failure(output = nil, context = {}) click to toggle source
# File lib/jet/result.rb, line 6
def failure(output = nil, context = {})
  new(false, output, context)
end
new(success, output = nil, context = {}) click to toggle source
# File lib/jet/result.rb, line 17
def initialize(success, output = nil, context = {})
  @context = _context(context)
  @success = success ? true : false
  @output = output
end
success(output = nil, context = {}) click to toggle source
# File lib/jet/result.rb, line 10
def success(output = nil, context = {})
  new(true, output, context)
end

Public Instance Methods

!=(other) click to toggle source
# File lib/jet/result.rb, line 23
def !=(other)
  !(self == other)
end
==(other) click to toggle source
# File lib/jet/result.rb, line 27
def ==(other)
  return output == other.output if other.is_a?(self.class)
  output == other
end
[](key) click to toggle source
# File lib/jet/result.rb, line 32
def [](key)
  @context[key]
end
at() click to toggle source
# File lib/jet/result.rb, line 36
def at
  context.fetch(:at, [])
end
errors() click to toggle source
# File lib/jet/result.rb, line 40
def errors
  context.fetch(:errors, [])
end
errors_at(*at) click to toggle source
# File lib/jet/result.rb, line 44
def errors_at(*at)
  at.flatten.yield_self { |a| errors.select { |e| e.at[0...a.size] == a } }
end
failure?() click to toggle source
# File lib/jet/result.rb, line 48
def failure?
  !@success
end
success?() click to toggle source
# File lib/jet/result.rb, line 52
def success?
  @success
end
with(**context) click to toggle source
# File lib/jet/result.rb, line 56
def with(**context)
  self.class.new(@success, @output, @context.merge(context))
end

Private Instance Methods

_context(context) click to toggle source
# File lib/jet/result.rb, line 71
def _context(context)
  context.dup.tap do |ctx|
    ctx[:at] &&= Array(ctx[:at])
    ctx[:errors] &&= _errors(ctx[:errors])
  end
end
_errors(errors) click to toggle source
# File lib/jet/result.rb, line 62
def _errors(errors)
  case errors
  when Hash
    errors.map { |at, error| error.with(at: error.at + Array(at)) }
  else
    Array(errors)
  end
end