Sha256: e4576743074e008fcd521516fdb009f624316fbff17076aaeeba7a94a6eae884

Contents?: true

Size: 850 Bytes

Versions: 4

Compression:

Stored size: 850 Bytes

Contents

# encoding: utf-8

module Formidable
  module Validations
    class ValidateLength < Validation
      # element.validate_length(10)
      # element.validate_length(10..20)
      # element.validate_length([10, 20])
      register(:validate_length)

      attr_reader :length
      def initialize(element, length)
        super(element)
        @length = length
      end

      def valid?
        length === element.length
      end

      def message # TODO: user can set message
        if length.respond_to?(:first)
          message_for_range
        else
          message_for_integer
        end
      end

      protected
      def message_for_integer
        "has to be #{length} characters long"
      end

      def message_for_range
        "has to be between #{length.first} and #{length.last} characters long"
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
formidable-0.1.2 lib/formidable/validations/length.rb
formidable-0.1.1 lib/formidable/validations/length.rb
formidable-0.1 lib/formidable/validations/length.rb
formidable-0.0.1 lib/formidable/validations/length.rb