Class: Lutaml::Xsd::Validation::BaseTypes::DateTimeValidator
- Inherits:
-
BaseTypeValidator
- Object
- BaseTypeValidator
- Lutaml::Xsd::Validation::BaseTypes::DateTimeValidator
- Defined in:
- lib/lutaml/xsd/validation/base_types/date_time_validator.rb
Overview
Validates XSD dateTime type
The dateTime type represents a specific instant in time in the format: YYYY-MM-DDTHH:MM:SS with optional timezone and fractional seconds.
Constant Summary collapse
- DATETIME_PATTERN =
ISO 8601 dateTime pattern
/^ -?\d{4}-\d{2}-\d{2} # Date part: YYYY-MM-DD T # T separator \d{2}:\d{2}:\d{2} # Time part: HH:MM:SS (\.\d+)? # Optional fractional seconds (Z|[+-]\d{2}:\d{2})? # Optional timezone $/x
Instance Method Summary collapse
-
#error_message(value) ⇒ String
Generate error message for invalid dateTime.
-
#valid?(value) ⇒ Boolean
Validate value is a valid dateTime.
Methods inherited from BaseTypeValidator
Instance Method Details
#error_message(value) ⇒ String
Generate error message for invalid dateTime
55 56 57 58 |
# File 'lib/lutaml/xsd/validation/base_types/date_time_validator.rb', line 55 def (value) "Value '#{value}' is not a valid dateTime. " \ "Expected format: YYYY-MM-DDTHH:MM:SS[.sss][Z|(+|-)HH:MM]" end |
#valid?(value) ⇒ Boolean
Validate value is a valid dateTime
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/lutaml/xsd/validation/base_types/date_time_validator.rb', line 37 def valid?(value) return false if value.nil? return true if value.is_a?(DateTime) || value.is_a?(Time) str = to_string(value).strip return false unless str.match?(DATETIME_PATTERN) # Attempt to parse with Ruby's DateTime DateTime.iso8601(str) true rescue ArgumentError, TypeError false end |