Sha256: cc6a48edbe6347f6107288000725abdfee1610353034f811ea13c64787aaa625

Contents?: true

Size: 786 Bytes

Versions: 41

Compression:

Stored size: 786 Bytes

Contents

# frozen_string_literal: true

require 'time'

class MiniDefender::Rules::DateFormat < MiniDefender::Rule
  def initialize(format)
    raise ArgumentError, 'Format must be a string' unless format.is_a?(String)
    raise ArgumentError, 'Format is required for this rule' if format.empty?

    @format = format
  end

  def self.signature
    'date_format'
  end

  def self.make(args)
    self.new(args[0])
  end

  def passes?(attribute, value, validator)
    parse_date(value).is_a?(Time)
  rescue ArgumentError
    false
  end

  def message(attribute, value, validator)
    'The given value is not a valid date.'
  end

  protected

  def parse_date(date)
    date = date.to_time if date.is_a?(Date)
    date = Time.strptime(date, @format) unless date.is_a?(Time)
    date
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
mini_defender-0.6.8 lib/mini_defender/rules/date_format.rb
mini_defender-0.6.7 lib/mini_defender/rules/date_format.rb
mini_defender-0.6.5 lib/mini_defender/rules/date_format.rb
mini_defender-0.6.4 lib/mini_defender/rules/date_format.rb
mini_defender-0.6.3 lib/mini_defender/rules/date_format.rb
mini_defender-0.6.2 lib/mini_defender/rules/date_format.rb
mini_defender-0.6.1 lib/mini_defender/rules/date_format.rb
mini_defender-0.6.0 lib/mini_defender/rules/date_format.rb
mini_defender-0.5.8 lib/mini_defender/rules/date_format.rb
mini_defender-0.5.7 lib/mini_defender/rules/date_format.rb
mini_defender-0.5.6 lib/mini_defender/rules/date_format.rb
mini_defender-0.5.5 lib/mini_defender/rules/date_format.rb
mini_defender-0.5.4 lib/mini_defender/rules/date_format.rb
mini_defender-0.5.3 lib/mini_defender/rules/date_format.rb
mini_defender-0.5.2 lib/mini_defender/rules/date_format.rb
mini_defender-0.5.1 lib/mini_defender/rules/date_format.rb
mini_defender-0.5.0 lib/mini_defender/rules/date_format.rb
mini_defender-0.4.1 lib/mini_defender/rules/date_format.rb
mini_defender-0.4.0 lib/mini_defender/rules/date_format.rb
mini_defender-0.3.14 lib/mini_defender/rules/date_format.rb