module Tzu::Validation

Public Class Methods

included(base) click to toggle source
# File lib/tzu/validation.rb, line 4
def self.included(base)
  base.class_eval do
    # registers validation as a before hook
    before :when_valid
  end
end

Public Instance Methods

fail!(type, data = {}) click to toggle source
# File lib/tzu/validation.rb, line 30
def fail!(type, data = {})
  raise Failure.new(type, data)
end
invalid!(obj) click to toggle source
# File lib/tzu/validation.rb, line 22
def invalid!(obj)
  output = [:errors, :messages, :message].reduce(obj) do |result, m|
    result = result.respond_to?(m) ? result.send(m) : result
  end

  raise Invalid.new(output)
end
validate(params) click to toggle source
# File lib/tzu/validation.rb, line 17
def validate(params)
  return ValidationResult.new(params.valid?, params.errors) if params.respond_to?(:valid?)
  ValidationResult.new(true)
end
when_valid(params) click to toggle source
# File lib/tzu/validation.rb, line 11
def when_valid(params)
  validation_result = validate(params)
  invalid!(validation_result.errors) unless validation_result.valid?
  validation_result
end