joaquimadraz/compel

View on GitHub
lib/compel/errors.rb

Summary

Maintainability
A
1 hr
Test Coverage
module Compel

  class Errors

    def initialize
      @errors = {}
    end

    def add(key, error)
      if error.nil? || error.empty?
        return
      end

      if error.is_a?(Compel::Errors) || error.is_a?(Hash)
        if @errors[key].nil?
          @errors[key] = {}
        end

        @errors[key].merge!(error.to_hash)
      else
        if @errors[key].nil?
          @errors[key] = []
        end

        if !error.is_a?(Array)
          error = [error]
        end

        @errors[key].concat(error)
      end

      @errors
    end

    def length
      @errors.keys.length
    end

    def empty?
      length == 0
    end

    def to_hash
      @errors
    end

  end

end