class ParamsReady::Result

Public Class Methods

new(name) click to toggle source
Calls superclass method ParamsReady::AbstractReporter::new
# File lib/params_ready/result.rb, line 28
def initialize(name)
  super
  @errors = []
  @children = {}
end

Public Instance Methods

child_ok?(path) click to toggle source
# File lib/params_ready/result.rb, line 68
def child_ok?(path)
  name, *path = path
  return ok? if name.nil?
  return true unless @children.key? name

  @children[name].child_ok?(path)
end
error() click to toggle source
# File lib/params_ready/result.rb, line 76
def error
  return nil if ok?

  Result::Error.new(error_messages(' -- '))
end
error_messages(separator = "\n") click to toggle source
# File lib/params_ready/result.rb, line 82
def error_messages(separator = "\n")
  errors.flat_map do |scope, errors|
    ["errors for #{scope}"] + errors.map { |err| err.message }
  end.join(separator)
end
errors(scope = '') click to toggle source
# File lib/params_ready/result.rb, line 40
def errors(scope = '')
  scope = full_scope(scope)
  proper = @errors.empty? ? {} : { scope => @errors }
  @children.values.reduce(proper) do |result, child|
    result.merge(child.errors(scope))
  end
end
full_scope(scope) click to toggle source
# File lib/params_ready/result.rb, line 34
def full_scope(scope)
  return name if scope.empty?

  "#{scope}.#{name}"
end
ok?() click to toggle source
# File lib/params_ready/result.rb, line 60
def ok?
  return false unless @errors.empty?

  @children.values.all? do |child|
    child.ok?
  end
end
report_error(path, err) click to toggle source
# File lib/params_ready/result.rb, line 48
def report_error(path, err)
  raise ParamsReadyError, "Is not Error: #{err}" unless err.is_a? StandardError

  name, *path = path
  if name.nil?
    @errors << err
  else
    @children[name] ||= Result.new(name)
    @children[name].report_error(path, err)
  end
end