# File lib/rufus/scheduler/cronline.rb, line 55
    def initialize(line)

      fail ArgumentError.new(
        "not a string: #{line.inspect}"
      ) unless line.is_a?(String)

      @original = line
      @original_timezone = nil

      items = line.split

      if @timezone = ZoTime.get_tzone(items.last)
        @original_timezone = items.pop
      else
        @timezone = ZoTime.get_tzone(:current)
      end

      fail 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], -30, 31)
      @months = parse_item(items[3 + offset], 1, 12)
      @weekdays, @monthdays = parse_weekdays(items[4 + offset])

      [ @seconds, @minutes, @hours, @months ].each do |es|

        fail ArgumentError.new(
          "invalid cronline: '#{line}'"
        ) if es && es.find { |e| ! e.is_a?(Integer) }
      end

      if @days && @days.include?(0) # gh-221

        fail ArgumentError.new('invalid day 0 in cronline')
      end
    end