Class: Monerorequest::Cron
- Inherits:
-
Object
- Object
- Monerorequest::Cron
- Defined in:
- lib/monerorequest/cron.rb
Overview
Parses and validates cron syntax string.
Constant Summary collapse
- MONTH_CODES =
%w[jan feb mar apr may jun jul aug sep oct nov dec].freeze
- DOW_CODES =
%w[mon tue wed thu fri sat sun].freeze
- DELIMITERS =
%r{,|-|/}.freeze
Class Method Summary collapse
- .parse(schedule) ⇒ Object
- .valid?(schedule) ⇒ Boolean
- .valid_days?(days) ⇒ Boolean
- .valid_dow?(dow) ⇒ Boolean
- .valid_hours?(hours) ⇒ Boolean
- .valid_minutes?(minutes) ⇒ Boolean
- .valid_months?(months) ⇒ Boolean
Class Method Details
.parse(schedule) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/monerorequest/cron.rb', line 38 def self.parse(schedule) schedule_parts = schedule.split return false if schedule_parts.length != 5 { "minutes" => schedule_parts[0].split(DELIMITERS), "hours" => schedule_parts[1].split(DELIMITERS), "days" => schedule_parts[2].split(DELIMITERS), "months" => schedule_parts[3].split(DELIMITERS), "dow" => schedule_parts[4].split(DELIMITERS) } end |
.valid?(schedule) ⇒ Boolean
9 10 11 12 13 14 15 16 |
# File 'lib/monerorequest/cron.rb', line 9 def self.valid?(schedule) parsed_schedule = parse(schedule) return false unless parsed_schedule valid_minutes?(parsed_schedule["minutes"]) && valid_hours?(parsed_schedule["hours"]) && valid_days?(parsed_schedule["days"]) && valid_months?(parsed_schedule["months"]) && valid_dow?(parsed_schedule["dow"]) end |
.valid_days?(days) ⇒ Boolean
26 27 28 |
# File 'lib/monerorequest/cron.rb', line 26 def self.valid_days?(days) days.all? { |dy| (1..31).member?(dy.to_i) } || days == ["*"] end |
.valid_dow?(dow) ⇒ Boolean
34 35 36 |
# File 'lib/monerorequest/cron.rb', line 34 def self.valid_dow?(dow) dow.all? { |d| DOW_CODES.include?(d.downcase) } || dow == ["*"] end |
.valid_hours?(hours) ⇒ Boolean
22 23 24 |
# File 'lib/monerorequest/cron.rb', line 22 def self.valid_hours?(hours) hours.all? { |hr| ("0".."23").member?(hr) } || hours == ["*"] end |
.valid_minutes?(minutes) ⇒ Boolean
18 19 20 |
# File 'lib/monerorequest/cron.rb', line 18 def self.valid_minutes?(minutes) minutes.all? { |min| ("0".."59").member?(min) } || minutes == ["*"] end |
.valid_months?(months) ⇒ Boolean
30 31 32 |
# File 'lib/monerorequest/cron.rb', line 30 def self.valid_months?(months) months.all? { |mth| (1..12).member?(mth.to_i) || MONTH_CODES.include?(mth.downcase) } || months == ["*"] end |