Sha256: f2cb7d49aff48125f5e2279dd92e8eb7786009a87a9d45a9b5b361d6fbf78358

Contents?: true

Size: 675 Bytes

Versions: 16

Compression:

Stored size: 675 Bytes

Contents

# frozen_string_literal: true

module ValidateParams
  class Types
    class Date
      FORMAT = "%Y-%m-%d"

      def self.valid?(value)
        value = value.to_s
        return false unless /\d{4}-\d{2}-\d{2}/.match?(value)

        parsed_date = begin
          ::Date.strptime(value, FORMAT)
        rescue StandardError
          nil
        end
        return false if parsed_date.nil?
        return false if parsed_date.year > 9999

        true
      end

      def self.cast(raw_value, **)
        return raw_value if raw_value.is_a?(::Date)

        ::Date.strptime(raw_value.to_s, FORMAT)
      rescue StandardError
        raw_value
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
validate-params-0.14.0 lib/validate_params/types/date.rb
validate-params-0.13.1 lib/validate_params/types/date.rb
validate-params-0.13.0 lib/validate_params/types/date.rb
validate-params-0.12.5 lib/validate_params/types/date.rb
validate-params-0.12.4 lib/validate_params/types/date.rb
validate-params-0.12.3 lib/validate_params/types/date.rb
validate-params-0.12.2 lib/validate_params/types/date.rb
validate-params-0.12.1 lib/validate_params/types/date.rb
validate-params-0.12.0 lib/validate_params/types/date.rb
validate-params-0.11.0 lib/validate_params/types/date.rb
validate-params-0.10.1 lib/validate_params/types/date.rb
validate-params-0.10.0 lib/validate_params/types/date.rb
validate-params-0.9.0 lib/validate_params/types/date.rb
validate-params-0.8.1 lib/validate_params/types/date.rb
validate-params-0.8.0 lib/validate_params/types/date.rb
validate-params-0.7.1 lib/validate_params/types/date.rb