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