Sha256: bca2499f36c99923272fec22597e1a073670b604f7af2c86e7cb4b17808a8ee3

Contents?: true

Size: 871 Bytes

Versions: 36

Compression:

Stored size: 871 Bytes

Contents

# frozen_string_literal: true

require 'time'

class MiniDefender::Rules::DateEq < MiniDefender::Rule
  def initialize(target_date)
    @target_date = parse_date(target_date)
    @valid_value = false
  end

  def self.signature
    'date_eq'
  end

  def self.make(args)
    raise ArgumentError, 'Target date is required for date rules.' unless args == 1

    self.new(args[0])
  end

  def passes?(attribute, value, validator)
    value = parse_date(value)
    @valid_value = true

    value == @target_date
  rescue ArgumentError
    false
  end

  def message(attribute, value, validator)
    return "The given value is not a valid date." unless @valid_value

    "The value must be equal to #{@target_date}."
  end

  protected

  def parse_date(date)
    date = date.to_time if date.is_a?(Date)
    date = Time.parse(date) unless date.is_a?(Time)
    date
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
mini_defender-0.6.2 lib/mini_defender/rules/date_eq.rb
mini_defender-0.6.1 lib/mini_defender/rules/date_eq.rb
mini_defender-0.6.0 lib/mini_defender/rules/date_eq.rb
mini_defender-0.5.8 lib/mini_defender/rules/date_eq.rb
mini_defender-0.5.7 lib/mini_defender/rules/date_eq.rb
mini_defender-0.5.6 lib/mini_defender/rules/date_eq.rb
mini_defender-0.5.5 lib/mini_defender/rules/date_eq.rb
mini_defender-0.5.4 lib/mini_defender/rules/date_eq.rb
mini_defender-0.5.3 lib/mini_defender/rules/date_eq.rb
mini_defender-0.5.2 lib/mini_defender/rules/date_eq.rb
mini_defender-0.5.1 lib/mini_defender/rules/date_eq.rb
mini_defender-0.5.0 lib/mini_defender/rules/date_eq.rb
mini_defender-0.4.1 lib/mini_defender/rules/date_eq.rb
mini_defender-0.4.0 lib/mini_defender/rules/date_eq.rb
mini_defender-0.3.14 lib/mini_defender/rules/date_eq.rb
mini_defender-0.3.13 lib/mini_defender/rules/date_eq.rb
mini_defender-0.3.12 lib/mini_defender/rules/date_eq.rb
mini_defender-0.3.11 lib/mini_defender/rules/date_eq.rb
mini_defender-0.3.10 lib/mini_defender/rules/date_eq.rb
mini_defender-0.3.9 lib/mini_defender/rules/date_eq.rb