# File lib/rufus/scheduler/cronline.rb, line 412
    def parse_range(item, min, max)

      return %w[ L ] if item == 'L'

      item = '*' + item if item[0, 1] == '/'

      m = item.match(RANGE_REGEX)

      fail ArgumentError.new(
        "cannot parse #{item.inspect}"
      ) unless m

      mmin = min == -30 ? 1 : min # days

      sta = m[1]
      sta = sta == '*' ? mmin : sta.to_i

      edn = m[2]
      edn = edn ? edn.to_i : sta
      edn = max if m[1] == '*'

      inc = m[3]
      inc = inc ? inc.to_i : 1

      fail ArgumentError.new(
        "#{item.inspect} positive/negative ranges not allowed"
      ) if (sta < 0 && edn > 0) || (sta > 0 && edn < 0)

      fail ArgumentError.new(
        "#{item.inspect} descending day ranges not allowed"
      ) if min == -30 && sta > edn

      fail ArgumentError.new(
        "#{item.inspect} is not in range #{min}..#{max}"
      ) if sta < min || edn > max

      fail ArgumentError.new(
        "#{item.inspect} increment must be greater than zero"
      ) if inc == 0

      r = []
      val = sta

      loop do
        v = val
        v = 0 if max == 24 && v == 24 # hours
        r << v
        break if inc == 1 && val == edn
        val += inc
        break if inc > 1 && val > edn
        val = min if val > max
      end

      r.uniq
    end