sul-dlss/moab-versioning

View on GitHub
lib/moab/utc_time.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module Moab
  # Timestamp conversion methods.
  class UtcTime
    # @param datetime [Time,String,Nil] The input datetime
    # @return [void] Convert input datetime to a Time object, or nil if input is empty.
    def self.input(datetime)
      case datetime
      when nil, ''
        nil
      when String
        Time.parse(datetime)
      when Time
        datetime
      else
        raise(MoabRuntimeError, "unknown time format #{datetime.inspect}")
      end
    end

    # @param datetime [Time,String,Nil] The datetime value to output
    # @return [String] Convert the datetime into a ISO 8601 formatted string
    def self.output(datetime)
      case datetime
      when nil, ''
        ''
      when String
        Time.parse(datetime).utc.iso8601
      when Time
        datetime.utc.iso8601
      else
        raise(MoabRuntimeError, "unknown time format #{datetime.inspect}")
      end
    end
  end
end