Sha256: daaa21b5a9beaa8e5161ae38c24c622a1ef066c3912d48348a7cdc7716f242b7

Contents?: true

Size: 746 Bytes

Versions: 1

Compression:

Stored size: 746 Bytes

Contents

module Zhong
  class Every
    class FailedToParse < StandardError; end

    EVERY_KEYWORDS = {
      day: 1.day,
      week: 1.week,
      month: 1.month,
      semiannual: 6.months, # enterprise!
      year: 1.year,
      decade: 10.years
    }.freeze

    def initialize(period)
      @period = period
    end

    def next_at(last = Time.now)
      last + @period
    end

    def self.parse(every)
      return unless every

      case every
      when Numeric, ActiveSupport::Duration
        new(every)
      when String, Symbol
        key = every.downcase.to_sym

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

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zhong-0.1.4 lib/zhong/every.rb