Class: Apes::Validators::TimestampValidator
- Inherits:
-
BaseValidator
- Object
- ActiveModel::EachValidator
- BaseValidator
- Apes::Validators::TimestampValidator
- Defined in:
- lib/apes/validators.rb
Overview
Validates timestamps.
Class Method Summary (collapse)
-
+ (DateTime|NilClass) parse(value, formats: nil, raise_errors: false)
Parses a timestamp value according to a list of formats.
-
+ (DateTime|NilClass) safe_parse(value, format)
Parses a timestamp without raising exceptions.
Instance Method Summary (collapse)
-
- (Boolean) check_valid?(value)
Checks if the value is valid for this validator.
-
- (Apes::Validators::TimestampValidator) initialize(options)
constructor
Creates a new validator.
Methods inherited from BaseValidator
Constructor Details
- (Apes::Validators::TimestampValidator) initialize(options)
Creates a new validator.
221 222 223 |
# File 'lib/apes/validators.rb', line 221 def initialize() super(.reverse_merge(default_message: "must be a valid ISO 8601 timestamp")) end |
Class Method Details
+ (DateTime|NilClass) parse(value, formats: nil, raise_errors: false)
Parses a timestamp value according to a list of formats.
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/apes/validators.rb', line 188 def self.parse(value, formats: nil, raise_errors: false) return value if [ActiveSupport::TimeWithZone, DateTime, Date, Time].include?(value.class) formats ||= Apes::RuntimeConfiguration..values.dup rv = catch(:valid) do formats.each do |format| parsed = safe_parse(value, format) throw(:valid, parsed) if parsed end nil end raise(ArgumentError, "Invalid timestamp \"#{value}\".") if !rv && raise_errors rv end |
+ (DateTime|NilClass) safe_parse(value, format)
Parses a timestamp without raising exceptions.
211 212 213 214 215 |
# File 'lib/apes/validators.rb', line 211 def self.safe_parse(value, format) DateTime.strptime(value, format) rescue nil end |
Instance Method Details
- (Boolean) check_valid?(value)
Checks if the value is valid for this validator.
229 230 231 |
# File 'lib/apes/validators.rb', line 229 def check_valid?(value) value.blank? || TimestampValidator.parse(value, formats: [:formats]) end |