Sha256: 6c18161d54804f855d329d58f30c8311a402f77d0627478e5715cfb0722c323b

Contents?: true

Size: 902 Bytes

Versions: 8

Compression:

Stored size: 902 Bytes

Contents

module ChefAPI
  #
  # Private internal class for managing the error collection.
  #
  class ErrorCollection < Hash
    #
    # The default proc for the hash needs to be an empty Array.
    #
    # @return [Proc]
    #
    def initialize
      super { |h, k| h[k] = [] }
    end

    #
    # Add a new error to the hash.
    #
    # @param [Symbol] key
    #   the attribute key
    # @param [String] error
    #   the error message to push
    #
    # @return [self]
    #
    def add(key, error)
      self[key].push(error)
      self
    end

    #
    # Output the full messages for each error. This is useful for displaying
    # information about validation to the user when something goes wrong.
    #
    # @return [Array<String>]
    #
    def full_messages
      map do |key, errors|
        errors.map do |error|
          "`#{key}' #{error}"
        end
      end.flatten
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
chef-infra-api-0.10.10 lib/chef-api/error_collection.rb
chef-api-0.10.10 lib/chef-api/error_collection.rb
chef-infra-api-0.10.7 lib/chef-api/error_collection.rb
chef-api-0.10.7 lib/chef-api/error_collection.rb
chef-infra-api-0.10.5 lib/chef-api/error_collection.rb
chef-api-0.10.5 lib/chef-api/error_collection.rb
chef-infra-api-0.10.2 lib/chef-api/error_collection.rb
chef-api-0.10.2 lib/chef-api/error_collection.rb