Class: Zhong::Every
- Inherits:
-
Object
- Object
- Zhong::Every
- Defined in:
- lib/zhong/every.rb
Defined Under Namespace
Classes: FailedToParse
Constant Summary collapse
- EVERY_KEYWORDS =
{ minute: 1.minute, hour: 1.hour, day: 1.day, week: 1.week, month: 1.month, year: 1.year, decade: 10.years }.freeze
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(period) ⇒ Every
constructor
A new instance of Every.
- #next_at(last = Time.now) ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(period) ⇒ Every
Returns a new instance of Every.
15 16 17 18 19 |
# File 'lib/zhong/every.rb', line 15 def initialize(period) @period = period raise "`every` must be >= 1 second" unless valid? end |
Class Method Details
.parse(every) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# 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 |
Instance Method Details
#next_at(last = Time.now) ⇒ Object
38 39 40 |
# File 'lib/zhong/every.rb', line 38 def next_at(last = Time.now) last + @period end |
#to_s ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/zhong/every.rb', line 21 def to_s EVERY_KEYWORDS.to_a.reverse.each do |friendly, period| next unless @period % period == 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 |