code: function parseRange (val, repeatInterval) {
      var stack = [];
      var atoms = val.split('-');
  
      if (atoms.length > 1 ) {
        // Invalid range, return value
        if (atoms.length < 2) {
          return +val;
        }
  
        if (!atoms[0].length) {
          if (!atoms[1].length) {
            throw new Error('Invalid range: ' + val);
          }
  
          return +val;
        }
  
        // Validate range
        var min = +atoms[0];
        var max = +atoms[1];
  
        if (safeIsNaN(min) || safeIsNaN(max) ||
            min < constraints[0] || max > constraints[1]) {
          throw new Error(
            'Constraint error, got range ' +
            min + '-' + max +
            ' expected range ' +
            constraints[0] + '-' + constraints[1]
          );
        } else if (min >= max) {
          throw new Error('Invalid range: ' + val);
        }
  
        // Create range
        var repeatIndex = +repeatInterval;
  
        if (safeIsNaN(repeatIndex) || repeatIndex <= 0) {
          throw new Error('Constraint error, cannot repeat at every ' + repeatIndex + ' time.');
        }
  
        for (var index = min, count = max; index <= count; index++) {
          if (repeatIndex > 0 && (repeatIndex % repeatInterval) === 0) {
            repeatIndex = 1;
            stack.push(index);
          } else {
            repeatIndex++;
          }
        }
  
        return stack;
      }
  
      return +val;
    }
docs: Parse range
  
  @param {String} val
  @param {Number} repeatInterval Repetition interval
  @return {Array}
  @private