Sha256: cb5c60d3de726be59943b667c73d17328664aef49b4761a3515390bc41472bb8

Contents?: true

Size: 880 Bytes

Versions: 6

Compression:

Stored size: 880 Bytes

Contents

# frozen_string_literal: true

require 'ur' unless Object.const_defined?(:Ur)

module Ur
  module Metadata
    include SubUr

    def began_at
      began_at_s ? Time.parse(began_at_s) : nil
    end
    def began_at=(time)
      self.began_at_s = time ? time.utc.iso8601(6) : nil
    end

    attr_accessor :began_at_ns

    # sets began_at from the current time
    def begin!
      self.began_at = Time.now
      self.began_at_ns = Process.clock_gettime(Process::CLOCK_MONOTONIC, :nanosecond)
    end

    # sets the duration from the current time and began_at
    def finish!
      return if duration
      if began_at_ns
        now_ns = Process.clock_gettime(Process::CLOCK_MONOTONIC, :nanosecond)
        self.duration = (now_ns - began_at_ns) * 1e-9
      elsif began_at
        now = Time.now
        self.duration = (now.to_f - began_at.to_f)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ur-0.2.5 lib/ur/metadata.rb
ur-0.2.4 lib/ur/metadata.rb
ur-0.2.3 lib/ur/metadata.rb
ur-0.2.2 lib/ur/metadata.rb
ur-0.2.1 lib/ur/metadata.rb
ur-0.2.0 lib/ur/metadata.rb