module Time::NoBrainerExtensions

Constants

InvalidType

Public Instance Methods

nobrainer_cast_db_to_model(value) click to toggle source
# File lib/no_brainer/document/types/time.rb, line 23
def nobrainer_cast_db_to_model(value)
  return value unless value.is_a?(Time)
  nobrainer_timezoned(NoBrainer::Config.user_timezone, value)
end
nobrainer_cast_model_to_db(value) click to toggle source
# File lib/no_brainer/document/types/time.rb, line 28
def nobrainer_cast_model_to_db(value)
  return value unless value.is_a?(Time)
  nobrainer_timezoned(NoBrainer::Config.db_timezone, value)
end
nobrainer_cast_user_to_model(value) click to toggle source
# File lib/no_brainer/document/types/time.rb, line 7
def nobrainer_cast_user_to_model(value)
  case value
  when Time then time = value
  when String
    value = value.strip
    value = value.sub(/Z$/, '+00:00') unless NoBrainer.jruby?
    # Using DateTime to preserve the timezone offset
    dt = DateTime.parse(value) rescue (raise InvalidType)
    time = Time.new(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.zone)
    raise InvalidType unless time.iso8601 == value
  else raise InvalidType
  end

  nobrainer_timezoned(NoBrainer::Config.user_timezone, time)
end
nobrainer_timezoned(tz, value) click to toggle source
# File lib/no_brainer/document/types/time.rb, line 33
def nobrainer_timezoned(tz, value)
  case tz
  when :local     then value.getlocal
  when :utc       then value.getutc
  when :unchanged then value
  end
end