Sha256: bb1d49d3e7e313840890d15c3da3950b7b74115cc5e9c6b20602f09096eab19b
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
require "vanguard" module Fortnox module API module Validator module Mixin class << self def included( base ) base.extend ClassMethods end end module ClassMethods def using_validations &block @validators ||= [] @validators << Vanguard::Validator.build( &block ) end def validators @validators || [] end end end class Base include Mixin def validate( instance ) raise_error_if_no_validator valid = true validators.each do |validator| validation_result = validator.call( instance ) violations.merge( validation_result.violations ) valid = valid && validation_result.valid? end return valid end def violations raise_error_if_no_validator @violations ||= Set.new end def instance raise_error_if_no_validator self end private def validators self.class.validators end def raise_error_if_no_validator return if validators.length > 0 raise ArgumentError, "No validator given" end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fortnox-api-0.1.0 | lib/fortnox/api/validators/base.rb |