Module: Protip::Transformers::ActiveSupport::TimeWithZoneTransformer

Includes:
Protip::Transformer
Defined in:
lib/protip/transformers/active_support/time_with_zone_transformer.rb

Instance Method Summary collapse

Instance Method Details

#to_message(value, message_class) ⇒ Object

Raises:

  • (ArgumentError)


21
22
23
24
25
26
27
28
29
30
31
# File 'lib/protip/transformers/active_support/time_with_zone_transformer.rb', line 21

def to_message(value, message_class)
  if !value.is_a?(::ActiveSupport::TimeWithZone) && (value.is_a?(Time) || value.is_a?(DateTime))
    value = ::ActiveSupport::TimeWithZone.new(value.to_time.utc, ::ActiveSupport::TimeZone.new('UTC'))
  end
  raise ArgumentError.new("Expected ActiveSupport::TimeWithZone, received #{value.class.name}") unless value.is_a?(::ActiveSupport::TimeWithZone)

  message_class.new(
    utc_timestamp: value.to_i,
    time_zone_name: value.time_zone.name,
  )
end

#to_object(message) ⇒ Object



14
15
16
17
18
19
# File 'lib/protip/transformers/active_support/time_with_zone_transformer.rb', line 14

def to_object(message)
  ActiveSupport::TimeWithZone.new(
    Time.at(message.utc_timestamp).utc,
    ActiveSupport::TimeZone.new(message.time_zone_name)
  )
end

#transformable?(message_class) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/protip/transformers/active_support/time_with_zone_transformer.rb', line 10

def transformable?(message_class)
  message_class == ::Protip::Messages::ActiveSupport::TimeWithZone
end