Class: Puppet::Pops::Time::TimeData

Inherits:
Numeric
  • Object
show all
Includes:
LabelProvider
Defined in:
lib/puppet/pops/time/timespan.rb

Overview

TimeData is a Numeric that stores its value internally as nano-seconds but will be considered to be seconds and fractions of seconds when used in arithmetic or comparison with other Numeric types.

Direct Known Subclasses

Timespan, Timestamp

Constant Summary

Constants included from LabelProvider

LabelProvider::A, LabelProvider::AN, LabelProvider::SKIPPED_CHARACTERS, LabelProvider::VOWELS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from LabelProvider

#a_an, #a_an_uc, #article, #combine_strings, #plural_s, #the, #the_uc

Constructor Details

#initialize(nanoseconds) ⇒ TimeData


29
30
31
# File 'lib/puppet/pops/time/timespan.rb', line 29

def initialize(nanoseconds)
  @nsecs = nanoseconds
end

Instance Attribute Details

#nsecsObject (readonly)

Returns the value of attribute nsecs


27
28
29
# File 'lib/puppet/pops/time/timespan.rb', line 27

def nsecs
  @nsecs
end

Instance Method Details

#<=>(o) ⇒ Object


33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/puppet/pops/time/timespan.rb', line 33

def <=>(o)
  case o
  when self.class
    @nsecs <=> o.nsecs
  when Integer
    to_int <=> o
  when Float
    to_f <=> o
  else
    nil
  end
end

#label(o) ⇒ Object


46
47
48
# File 'lib/puppet/pops/time/timespan.rb', line 46

def label(o)
  Utils.name_to_segments(o.class.name).last
end

#to_cComplex


65
66
67
# File 'lib/puppet/pops/time/timespan.rb', line 65

def to_c
  to_f.to_c
end

#to_fFloat


51
52
53
# File 'lib/puppet/pops/time/timespan.rb', line 51

def to_f
  @nsecs.fdiv(NSECS_PER_SEC)
end

#to_iObject


60
61
62
# File 'lib/puppet/pops/time/timespan.rb', line 60

def to_i
  to_int
end

#to_intInteger


56
57
58
# File 'lib/puppet/pops/time/timespan.rb', line 56

def to_int
  @nsecs / NSECS_PER_SEC
end

#to_rRational


70
71
72
# File 'lib/puppet/pops/time/timespan.rb', line 70

def to_r
  Rational(@nsecs, NSECS_PER_SEC)
end