class Zhong::Every

Constants

EVERY_KEYWORDS

Public Class Methods

new(period) click to toggle source
# File lib/zhong/every.rb, line 15
def initialize(period)
  @period = period

  raise "`every` must be >= 1 second" unless valid?
end
parse(every) click to toggle source
# File lib/zhong/every.rb, line 42
def self.parse(every)
  case every
  when Numeric, ActiveSupport::Duration
    new(every)
  when String, Symbol
    key = every.downcase.to_sym

    raise FailedToParse, every unless EVERY_KEYWORDS.key?(key)

    new(EVERY_KEYWORDS[key])
  else
    raise FailedToParse, every
  end
end

Public Instance Methods

next_at(last = Time.now) click to toggle source
# File lib/zhong/every.rb, line 38
def next_at(last = Time.now)
  last + @period
end
to_s() click to toggle source
# File lib/zhong/every.rb, line 21
def to_s
  EVERY_KEYWORDS.to_a.reverse.each do |friendly, period|
    next unless @period.to_i % period.to_i == 0

    rem = @period / period

    return "#{rem} #{friendly}" if rem == 1
    return "#{rem} #{friendly}s"
  end

  "#{@period.to_i} second#{@period.to_i == 1 ? '' : 's'}"
end

Private Instance Methods

valid?() click to toggle source
# File lib/zhong/every.rb, line 34
        def valid?
  @period.to_f >= 1
end