require 'stockboy/translator' module Stockboy::Translations # Convert ISO-8601 and other recognized time-like strings to +Time+ # # Uses +ActiveSupport::TimeWithZone+ if available. # # == Job template DSL # # Registered as +:time+. Use with: # # attributes do # arriving as: :time # end # # @example # time = Stockboy::Translator::Time.new # # record.arriving = "2012-01-01 12:34:56 UTC" # time.translate(record, :arriving) # => #<Time 2012-01-01 12:34:56> # class Time < Stockboy::Translator # @return [Time] # def translate(context) value = field_value(context, field_key) return nil if (value).blank? clock.parse(value).to_time end private def clock ::Time.respond_to?(:zone) && ::Time.zone || ::DateTime end end end