Sha256: fc25eae1310764441b7a85de0c997359ae4f9ad4a48f0cf700ee804b66bb8cd8

Contents?: true

Size: 741 Bytes

Versions: 4

Compression:

Stored size: 741 Bytes

Contents

# frozen_string_literal: true

module Zenaton
  # :nodoc
  module Refinements
    refine Time do
      # Convert to a simple hash
      def to_zenaton
        nanoseconds = [tv_usec * 1000]
        respond_to?(:tv_nsec) && nanoseconds << tv_nsec
        nanoseconds = nanoseconds.max
        {
          's' => tv_sec,
          'n' => nanoseconds
        }
      end
    end
  end
end

# Reimplements `json/add/time`
class Time
  # Parse from simple hash
  def self.from_zenaton(props)
    if (usec = props.delete('u')) # used to be tv_usec -> tv_nsec
      props['n'] = usec * 1000
    end
    if method_defined?(:tv_nsec)
      at(props['s'], Rational(props['n'], 1000))
    else
      at(props['s'], props['n'] / 1000)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
zenaton-0.6.0 lib/zenaton/refinements/time.rb
zenaton-0.5.3 lib/zenaton/refinements/time.rb
zenaton-0.5.2 lib/zenaton/refinements/time.rb
zenaton-0.5.1 lib/zenaton/refinements/time.rb