Class: Ohm::Validations::Presenter
Overview
Provides a simple implementation using the Presenter Pattern. When presenting errors, you have to properly catch all errors generated, or else you’ll get an UnhandledErrors exception.
Defined Under Namespace
Classes: UnhandledErrors
Instance Method Summary (collapse)
- - (Object) handle(error) protected
- - (Object) ignore(error)
-
- (Presenter) initialize(errors)
constructor
A new instance of Presenter.
- - (Object) on(error, message = (block_given? ? yield : raise(ArgumentError)))
- - (Object) present {|_self| ... }
Constructor Details
- (Presenter) initialize(errors)
A new instance of Presenter
71 72 73 74 75 |
# File 'lib/ohm/validations.rb', line 71 def initialize(errors) @errors = errors @unhandled = errors.dup @output = [] end |
Instance Method Details
- (Object) handle(error) (protected)
95 96 97 98 99 100 |
# File 'lib/ohm/validations.rb', line 95 def handle(error) if (errors = @errors.select {|e| error === e }).any? @unhandled -= errors yield(errors) if block_given? end end |
- (Object) ignore(error)
83 84 85 |
# File 'lib/ohm/validations.rb', line 83 def ignore(error) handle(error) end |
- (Object) on(error, message = (block_given? ? yield : raise(ArgumentError)))
77 78 79 80 81 |
# File 'lib/ohm/validations.rb', line 77 def on(error, = (block_given? ? yield : raise(ArgumentError))) handle(error) do @output << end end |
- (Object) present {|_self| ... }
87 88 89 90 91 |
# File 'lib/ohm/validations.rb', line 87 def present yield(self) raise UnhandledErrors.new(@unhandled) unless @unhandled.empty? @output end |