Class: SplitDmy::DateValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/split_dmy/date_validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(object, attribute) ⇒ DateValidator

Returns a new instance of DateValidator.



3
4
5
6
7
8
9
# File 'lib/split_dmy/date_validator.rb', line 3

def initialize(object, attribute)
  @split_day = object.instance_variable_get("@#{attribute}_day")
  @split_month = object.instance_variable_get("@#{attribute}_month")
  @split_year = object.instance_variable_get("@#{attribute}_year").to_i
  @object = object
  @attr = attribute
end

Instance Method Details

#any_errors?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/split_dmy/date_validator.rb', line 37

def any_errors?
  !partials_valid? || partials_valid_date_fails?
end

#build_dateObject



26
27
28
29
30
31
32
33
34
35
# File 'lib/split_dmy/date_validator.rb', line 26

def build_date
  date = Date.new(
    @split_year.to_i,
    parse_month(@split_month),
    @split_day.to_i
  )
  date if partials_match_date(date)
rescue
  false
end

#parse_month(val) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/split_dmy/date_validator.rb', line 16

def parse_month(val)
  if valid_fixnum?(val, 12) || valid_numeric_string?(val, 12)
    result = val.to_i
  else
    mon_name = valid_month_name?(val)
    result = mon_name.present? ? mon_name : val
  end
  result.to_i
end

#partial_updatedObject



11
12
13
14
# File 'lib/split_dmy/date_validator.rb', line 11

def partial_updated
  new_date = build_date
  partials_valid? && new_date ? new_date : nil
end