Module: Wavefront::Mixins
- Included in:
- Base
- Defined in:
- lib/wavefront-sdk/mixins.rb
Instance Method Summary collapse
- #parse_relative_time(t, ms = false) ⇒ Object
-
#parse_time(t, ms = false) ⇒ Integer
Return a time as an integer, however it might come in.
-
#relative_time(t, ms = false, ref = DateTime.now) ⇒ Integer
Return a timetamp described by the given string.
-
#time_multiplier(suffix) ⇒ Integer
naively return the number of seconds from the given multiplier.
Instance Method Details
#parse_relative_time(t, ms = false) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/wavefront-sdk/mixins.rb', line 38 def parse_relative_time(t, ms = false) unless t.start_with?('+') || t.start_with?('-') raise Wavefront::Exception::InvalidRelativeTime end m = ms ? 1000 : 1 t = t[1..-1] if t.start_with?('+') match = t.match(/^(-?\d*\.?\d*)([smhdwy])$/) (match[1].to_f * time_multiplier(match[2]) * m).to_i rescue NoMethodError raise Wavefront::Exception::InvalidRelativeTime end |
#parse_time(t, ms = false) ⇒ Integer
Return a time as an integer, however it might come in.
16 17 18 19 |
# File 'lib/wavefront-sdk/mixins.rb', line 16 def parse_time(t, ms = false) return relative_time(t, ms) if t =~ /^[\-+]/ ParseTime.new(t, ms).parse! end |
#relative_time(t, ms = false, ref = DateTime.now) ⇒ Integer
Return a timetamp described by the given string. That is, ‘+5m’ is five minutes in the future, and ‘-.1h’ is half an hour ago.
33 34 35 36 |
# File 'lib/wavefront-sdk/mixins.rb', line 33 def relative_time(t, ms = false, ref = DateTime.now) ref = ms ? ref.to_datetime.strftime('%Q') : ref.to_time ref.to_i + parse_relative_time(t, ms) end |
#time_multiplier(suffix) ⇒ Integer
naively return the number of seconds from the given multiplier. This makes absolutely no attempt to compensate for any kind of daylight savings or calendar adjustment. A day is always going to 60 seconds x 60 minutes x 24 hours, and a year will always have 365 days.
63 64 65 66 67 68 |
# File 'lib/wavefront-sdk/mixins.rb', line 63 def time_multiplier(suffix) u = { s: 1, m: 60, h: 3600, d: 86400, w: 604800, y: 31536000 } return u[suffix.to_sym] if u.key?(suffix.to_sym) raise Wavefront::Exception::InvalidTimeUnit end |