Module: Philiprehberger::CronKit::Parser

Included in:
Expression
Defined in:
lib/philiprehberger/cron_kit/parser.rb

Overview

Parsing logic for 5-field cron expressions. Extracted from Expression to keep class size manageable.

Constant Summary collapse

FIELD_RANGES =
[
  0..59,  # minute
  0..23,  # hour
  1..31,  # day of month
  1..12,  # month
  0..6    # day of week
].freeze
FIELD_NAMES =
%w[minute hour day-of-month month day-of-week].freeze

Instance Method Summary collapse

Instance Method Details

#parse_expression(expression) ⇒ Object

Raises:



18
19
20
21
22
23
24
25
26
# File 'lib/philiprehberger/cron_kit/parser.rb', line 18

def parse_expression(expression)
  parts = expression.split(/\s+/)

  raise ParseError, "expected 5 fields, got #{parts.length}: #{expression.inspect}" unless parts.length == 5

  parts.each_with_index.map do |part, index|
    parse_field(part, FIELD_RANGES[index], FIELD_NAMES[index])
  end
end