Sha256: eb692bb56465955efdd1a31f9dcc21e4fd6056d734869bc0d692b1070ccd461a

Contents?: true

Size: 861 Bytes

Versions: 15

Compression:

Stored size: 861 Bytes

Contents

require 'ardm/property/time'

module Ardm
  class Property
    class EpochTime < Time
      dump_as ::Integer

      def load(value)
        if value.kind_of?(::Numeric)
          ::Time.at(value.to_i)
        else
          value
        end
      end

      def dump(value)
        value.to_i if value
      end

      def typecast(value)
        case value
          when ::Time               then value
          when ::Numeric, /\A\d+\z/ then ::Time.at(value.to_i)
          when ::DateTime           then datetime_to_time(value)
          when ::String             then ::Time.parse(value)
        end
      end

    private

      def datetime_to_time(datetime)
        utc = datetime.new_offset(0)
        ::Time.utc(utc.year, utc.month, utc.day, utc.hour, utc.min, utc.sec)
      end

    end # class EpochTime
  end # class Property
end # module Ardm

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
ardm-0.4.0.ar427 lib/ardm/property/epoch_time.rb
ardm-0.4.0 lib/ardm/property/epoch_time.rb
ardm-0.3.2 lib/ardm/property/epoch_time.rb
ardm-0.3.1 lib/ardm/property/epoch_time.rb
ardm-0.3.0 lib/ardm/property/epoch_time.rb
ardm-0.2.7 lib/ardm/property/epoch_time.rb
ardm-0.2.6 lib/ardm/property/epoch_time.rb
ardm-0.2.5 lib/ardm/property/epoch_time.rb
ardm-0.2.4 lib/ardm/property/epoch_time.rb
ardm-0.2.3 lib/ardm/property/epoch_time.rb
ardm-0.2.2 lib/ardm/property/epoch_time.rb
ardm-0.2.1 lib/ardm/property/epoch_time.rb
ardm-0.2.0 lib/ardm/property/epoch_time.rb
ardm-0.1.0 lib/ardm/property/epoch_time.rb
ardm-0.0.1 lib/ardm/property/epoch_time.rb