Advertisement
menixator

ranges

Sep 16th, 2014
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     RANGE_REGEX = /^bytes=(\d+)?-(\d+)?$/;
  2.     function parseRange (str) {
  3.         if (!RANGE_REGEX.test(str)) {
  4.             throw new Error("Incorrect format.");
  5.         }
  6.         var match = RANGE_REGEX.exec(str);
  7.         var ranges = {};
  8.         var start = match[1] ? parseInt(match[1], 10) : 0;
  9.         var end = match[2] ? parseInt(match[2], 10) : Infinity;
  10.         ranges.start = Math.min(start, end);
  11.         ranges.end = Math.max(start, end);
  12.         if (ranges.start === 0) {
  13.             ranges.start = null;
  14.         }
  15.         if (ranges.end === Infinity) {
  16.             ranges.end = null;
  17.         }
  18.         return ranges;
  19.     };
  20.  
  21.     function stringifyRange(obj) {
  22.         var start = obj.start;
  23.         var end = obj.end;
  24.         if (start === null || end === null) {
  25.             if (start === null) {
  26.                 start = "";
  27.             }
  28.             if (end === null) {
  29.                 end = "";
  30.             }
  31.         } else {
  32.             if (start > end) {
  33.                 var temp = start;
  34.                 start = end;
  35.                 end = temp;
  36.             }
  37.         }
  38.         return "bytes=" + start + "-" + end;
  39.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement