Class: UDDF::Base::Models::DateTimeField

Inherits:
Object
  • Object
show all
Includes:
HappyMapper
Defined in:
lib/uddf/base/models/generic.rb

Instance Attribute Summary collapse

Instance Attribute Details

#date_timeObject

Lazily parse on first access; memoize in @date_time



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/uddf/base/models/generic.rb', line 44

def date_time
  return @date_time if @date_time

  content = raw.to_s.strip
  return nil if content.empty?

  @date_time =
    case content
    when /^\d{4}$/               # "YYYY"
      DateTime.new(content.to_i, 1, 1)
    when /^\d{4}-\d{2}$/         # "YYYY-MM"
      y, m = content.split("-").map!(&:to_i)
      DateTime.new(y, m, 1)
    else
      begin
        DateTime.iso8601(content)
      rescue ArgumentError, DateError
        begin
          DateTime.rfc3339(content)
        rescue ArgumentError, DateError
          DateTime.parse(content)
        end
      end
    end
end