module GS1::Validations::DateValidation

Ensures correct date validation.

Public Instance Methods

valid_date?() click to toggle source
# File lib/gs1/validations/date_validation.rb, line 16
def valid_date?
  return true if data.is_a?(::Date)

  ::Date.parse(data)

  true
rescue TypeError, ArgumentError
  false
end
valid_format_a?(data) click to toggle source
# File lib/gs1/validations/date_validation.rb, line 32
def valid_format_a?(data)
  valid_date_format?(data, '%y%m%d')
end
valid_format_b?(data) click to toggle source

Read more about this date format in the GS1::Extensions::MonthBasedDate class.

# File lib/gs1/validations/date_validation.rb, line 37
def valid_format_b?(data)
  valid_date_format?(data, '%y%m00')
end
valid_month_based_date?() click to toggle source
# File lib/gs1/validations/date_validation.rb, line 26
def valid_month_based_date?
  return true if data.is_a?(::Date)

  valid_format_a?(data) || valid_format_b?(data)
end
validate_date(_options = {}) click to toggle source
# File lib/gs1/validations/date_validation.rb, line 8
def validate_date(_options = {})
  errors << 'Invalid date' unless valid_date?
end
validate_date_month_based(_options = {}) click to toggle source
# File lib/gs1/validations/date_validation.rb, line 12
def validate_date_month_based(_options = {})
  errors << 'Invalid date' unless valid_month_based_date?
end

Private Instance Methods

valid_date_format?(data, pattern) click to toggle source
# File lib/gs1/validations/date_validation.rb, line 43
def valid_date_format?(data, pattern)
  ::Date.strptime(data, pattern)

  true
rescue TypeError, ArgumentError
  false
end