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

Returns a new instance of 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

Returns short for ‘#to_f.to_c`.

Returns:

  • (Complex)

    short for ‘#to_f.to_c`



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

def to_c
  to_f.to_c
end

#to_fFloat

Returns the number of seconds.

Returns:

  • (Float)

    the number of seconds



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

Returns the number of seconds with fraction part truncated.

Returns:

  • (Integer)

    the number of seconds with fraction part truncated



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

def to_int
  @nsecs / NSECS_PER_SEC
end

#to_rRational

Returns initial numerator is nano-seconds and denominator is nano-seconds per second.

Returns:

  • (Rational)

    initial numerator is nano-seconds and denominator is nano-seconds per second



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

def to_r
  Rational(@nsecs, NSECS_PER_SEC)
end