class Cronin::CronTask
Public Class Methods
new(entry)
click to toggle source
# File lib/cronin/cron_task.rb, line 6 def initialize(entry) @parsed_entry = Parser.new(entry).parse end
Public Instance Methods
daily_execution_hours(options = {})
click to toggle source
# File lib/cronin/cron_task.rb, line 79 def daily_execution_hours(options = {}) options = {:start_hour => 0, :start_minute => 0, :end_hour => 23, :end_minute => 59}.merge(options) execution_hours = [] hours = @parsed_entry[:hours].timing hours = hours.select {|hour| options[:start_hour] <= hour } hours = hours.select {|hour| options[:end_hour] >= hour } minutes = @parsed_entry[:minutes].timing hours.each do |hour| _minutes = if hour == options[:start_hour] minutes.select { |minute| options[:start_minute] <= minute } else minutes end _minutes = if hour == options[:end_hour] _minutes.select { |minute| options[:end_minute] >= minute } else _minutes end _minutes.each do |minute| execution_hours << Cronin::Hour.new(hour,minute) end end execution_hours end
execution_days()
click to toggle source
# File lib/cronin/cron_task.rb, line 47 def execution_days get_days.select do |day| wday_mday = if both_wday_and_mday_are_restricted? (@parsed_entry[:week_days].timing.include?(day.wday) || @parsed_entry[:month_days].timing.include?(day.mday)) else (@parsed_entry[:week_days].timing.include?(day.wday) && @parsed_entry[:month_days].timing.include?(day.mday)) end # maybe it is to long? # @parsed_entry[:week_days].timing wday_mday && @parsed_entry[:months].timing.include?(day.month) end end
executions(start_time, end_time)
click to toggle source
# File lib/cronin/cron_task.rb, line 10 def executions(start_time, end_time) raise 'end date can not be earlier then start date' if end_time < start_time @start_time = start_time @end_time = end_time get_executions end
get_days()
click to toggle source
# File lib/cronin/cron_task.rb, line 69 def get_days start_day = Date.parse(time_to_string(@start_time)) end_day = Date.parse(time_to_string(@end_time)) if start_day == end_day return [start_day] else return (start_day..end_day).to_a end end
get_executions()
click to toggle source
# File lib/cronin/cron_task.rb, line 17 def get_executions start_day = Date.parse(time_to_string(@start_time)) end_day = Date.parse(time_to_string(@end_time)) executions = [] execution_days.each do |day| if start_day == day execution_hours = daily_execution_hours(:start_hour => @start_time.hour, :start_minute => @start_time.min) end if end_day == day execution_hours = daily_execution_hours(:end_hour => @end_time.hour, :end_minute => @end_time.min) end if end_day == start_day options = { :start_hour => @start_time.hour, :start_minute => @start_time.min, :end_hour => @end_time.hour, :end_minute => @end_time.min } execution_hours = daily_execution_hours(options) end if end_day != day && start_day != day execution_hours = daily_execution_hours end execution_hours.each do |hour| executions << Time.mktime(day.year,day.month,day.day,hour.hour,hour.minute) end end executions end
Private Instance Methods
both_wday_and_mday_are_restricted?()
click to toggle source
# File lib/cronin/cron_task.rb, line 62 def both_wday_and_mday_are_restricted? @parsed_entry[:week_days].restricted? && @parsed_entry[:month_days].restricted? end
time_to_string(time)
click to toggle source
# File lib/cronin/cron_task.rb, line 104 def time_to_string(time) "#{time.year}-#{time.month}-#{time.day}" end