Sha256: d70d3616dc1e90dfa0d71a51582e4e4f76a3ed0140da9f0cb2c2b74ae315c41c

Contents?: true

Size: 1.53 KB

Versions: 10

Compression:

Stored size: 1.53 KB

Contents

module ChronoTrigger
  
  class CronEntry
   
    def initialize(options={})
      set_days(options[:days])
      set_hours(options[:hours])
      set_minutes(options[:minutes])
    end

    DAYS_CONVERSION = {
      :sunday     => 0,
      :monday     => 1,
      :tuesday    => 2,
      :wednesday  => 3,
      :thursday   => 4,
      :friday     => 5,
      :saturday   => 6
    }
    
    def set_hours(*args)
      args.compact!
      args.flatten!
      raise ChronoTrigger::ConfigurationException.new("Hours must be less than 24") if args.any? {|hour| hour >= 24}
      @hours = args
    end
    
    def set_days(*args)
      args.compact!
      args.flatten!
      args.each {|day| raise ChronoTrigger::ConfigurationException.new("Day #{day} setting is invalid") if !DAYS_CONVERSION.keys.include?(day)}
      @days = args.map { |day| DAYS_CONVERSION[day] }
    end

    def set_minutes(*args)
      args.compact!
      args.flatten!
      raise ChronoTrigger::ConfigurationException.new("Minutes must be less than 60") if args.any? {|minute| minute >= 60}      
      @minutes = args
    end 

    def matches?(datetime)
      if @minutes.blank? && !@days.blank?
        raise ChronoTrigger::ConfigurationException.new("Days were specified for a CronEntry with no minutes specified") 
      end
      
      return false if !@minutes.blank? && !@minutes.include?(datetime.min)
      return false if !@hours.blank? && !@hours.include?(datetime.hour)
      return false if !@days.blank? && !@days.include?(datetime.wday)   
      return true
    end

  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
gregfitz23-chrono_trigger-0.0.2 lib/chrono_trigger/cron_entry.rb
gregfitz23-chrono_trigger-0.0.3 lib/chrono_trigger/cron_entry.rb
gregfitz23-chrono_trigger-0.0.4 lib/chrono_trigger/cron_entry.rb
gregfitz23-chrono_trigger-0.0.5 lib/chrono_trigger/cron_entry.rb
gregfitz23-chrono_trigger-0.1.0 lib/chrono_trigger/cron_entry.rb
gregfitz23-chrono_trigger-0.1.1 lib/chrono_trigger/cron_entry.rb
gregfitz23-chrono_trigger-0.1.2 lib/chrono_trigger/cron_entry.rb
gregfitz23-chrono_trigger-0.1.3 lib/chrono_trigger/cron_entry.rb
gregfitz23-chrono_trigger-0.1.4 lib/chrono_trigger/cron_entry.rb
gregfitz23-chrono_trigger-0.1.5 lib/chrono_trigger/cron_entry.rb