Sha256: 4994821fb4eb360db0bd28ef9de4cc5d09608349e1d0b633f33b687345637fba

Contents?: true

Size: 1.58 KB

Versions: 19

Compression:

Stored size: 1.58 KB

Contents

# encoding: utf-8
module Warden
  class Proxy
    # Lifted from DataMapper's dm-validations plugin :)
    # @author Guy van den Berg
    # @since  DM 0.9
    class Errors

      include Enumerable

      # Clear existing authentication errors.
      def clear!
        errors.clear
      end

      # Add a authentication error. Use the field_name :general if the errors does
      # not apply to a specific field of the Resource.
      #
      # @param <Symbol> field_name the name of the field that caused the error
      # @param <String> message    the message to add
      def add(field_name, message)
        (errors[field_name] ||= []) << message
      end

      # Collect all errors into a single list.
      def full_messages
        errors.inject([]) do |list,pair|
          list += pair.last
        end
      end

      # Return authentication errors for a particular field_name.
      #
      # @param <Symbol> field_name the name of the field you want an error for
      def on(field_name)
        errors_for_field = errors[field_name]
        blank?(errors_for_field) ? nil : errors_for_field
      end

      def each
        errors.map.each do |k,v|
          next if blank?(v)
          yield(v)
        end
      end

      def empty?
        entries.empty?
      end

      def method_missing(meth, *args, &block)
        errors.send(meth, *args, &block)
      end

      private
      def errors
        @errors ||= {}
      end

      def blank?(thing)
        thing.nil? || thing == "" || (thing.respond_to?(:empty?) && thing.empty?)
      end

    end # class Errors
  end # Proxy
end # Warden

Version data entries

19 entries across 19 versions & 6 rubygems

Version Path
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/warden-1.2.6/lib/warden/errors.rb
warden-1.2.6 lib/warden/errors.rb
warden-1.2.5 lib/warden/errors.rb
warden-1.2.4 lib/warden/errors.rb
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/warden-1.2.3/lib/warden/errors.rb
loyal_warden-2.0.1 lib/warden/errors.rb
loyal_warden-0.0.5 lib/warden/errors.rb
warden-1.2.3 lib/warden/errors.rb
devise_sociable-0.1.0 vendor/bundle/gems/warden-1.2.1/lib/warden/errors.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/warden-1.2.1/lib/warden/errors.rb
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/errors.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/errors.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/errors.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/errors.rb
warden-1.2.1 lib/warden/errors.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/errors.rb
warden-1.2.0 lib/warden/errors.rb
warden-1.1.1 lib/warden/errors.rb
warden-1.1.0 lib/warden/errors.rb