class SayWhen::CronValue
Attributes
expression[RW]
max[RW]
min[RW]
part[RW]
values[RW]
Public Class Methods
new(p, min, max, exp)
click to toggle source
# File lib/say_when/cron_expression.rb, line 124 def initialize(p, min, max, exp) self.part = p self.min = min self.max = max self.values = [] self.expression = exp parse(exp) end
parse_number(min, max, val)
click to toggle source
works for secs, mins, hours
# File lib/say_when/cron_expression.rb, line 146 def self.parse_number(min, max, val) values = [] case val #check for a '/' for increments when /(.+)\/(\d+)/ (( $1 == "*") ? min : $1.to_i).step(max, $2.to_i) { |x| values << x } #check for ',' for list of values when /(\d+)(,\d+)+/ values = val.split(',').map{ |v| v.to_i }.sort #check for '-' for range of values when /(\d+)-(\d+)/ values = (($1.to_i)..($2.to_i)).to_a #check for '*' for all values between min and max when /^(\*)$/ values = (min..max).to_a #lastly, should just be a number when /^(\d+)$/ values << $1.to_i #if nothing else, leave values as [] else values = [] end values end
Public Instance Methods
include?(date)
click to toggle source
# File lib/say_when/cron_expression.rb, line 141 def include?(date) values.include?(date.send(part)) end
parse(exp)
click to toggle source
# File lib/say_when/cron_expression.rb, line 133 def parse(exp) self.values = CronValue.parse_number(min, max, exp.upcase) end
to_s()
click to toggle source
# File lib/say_when/cron_expression.rb, line 137 def to_s "[e:#{expression}, v:#{values.inspect}]\n" end