class Rufus::Scheduler::CronLine

def initialize(line)

def initialize(line)
  raise ArgumentError.new(
    "not a string: #{line.inspect}"
  ) unless line.is_a?(String)
  @original = line
  items = line.split
  @timezone = items.pop if ZoTime.is_timezone?(items.last)
  raise ArgumentError.new(
    "not a valid cronline : '#{line}'"
  ) unless items.length == 5 or items.length == 6
  offset = items.length - 5
  @seconds = offset == 1 ? parse_item(items[0], 0, 59) : [ 0 ]
  @minutes = parse_item(items[0 + offset], 0, 59)
  @hours = parse_item(items[1 + offset], 0, 24)
  @days = parse_item(items[2 + offset], 1, 31)
  @months = parse_item(items[3 + offset], 1, 12)
  @weekdays, @monthdays = parse_weekdays(items[4 + offset])
  [ @seconds, @minutes, @hours, @months ].each do |es|
    raise ArgumentError.new(
      "invalid cronline: '#{line}'"
    ) if es && es.find { |e| ! e.is_a?(Fixnum) }
  end
end