3 * Copyright(c) 2012-2014 TJ Holowaychuk
14 module.exports = rangeParser;
17 * Parse "Range" header `str` relative to the given file `size`.
19 * @param {Number} size
25 function rangeParser(size, str) {
27 var i = str.indexOf('=');
29 if (-1 == i) return -2;
31 var arr = str.slice(i + 1).split(',').map(function(range){
32 var range = range.split('-')
33 , start = parseInt(range[0], 10)
34 , end = parseInt(range[1], 10);
41 } else if (isNaN(end)) {
45 // limit last-byte-pos to current length
46 if (end > size - 1) end = size - 1;
52 || start < 0) valid = false;
60 arr.type = str.slice(0, i);
62 return valid ? arr : -1;