10
0

parseTokenList.js 785 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. "use strict";
  2. /**
  3. * Parse a HTTP token list.
  4. *
  5. * @param {string} str
  6. * @returns {string[]} tokens
  7. */
  8. function parseTokenList(str) {
  9. let end = 0;
  10. let start = 0;
  11. const list = [];
  12. // gather tokens
  13. for (let i = 0, len = str.length; i < len; i++) {
  14. switch (str.charCodeAt(i)) {
  15. case 0x20 /* */:
  16. if (start === end) {
  17. end = i + 1;
  18. start = end;
  19. }
  20. break;
  21. case 0x2c /* , */:
  22. if (start !== end) {
  23. list.push(str.substring(start, end));
  24. }
  25. end = i + 1;
  26. start = end;
  27. break;
  28. default:
  29. end = i + 1;
  30. break;
  31. }
  32. }
  33. // final token
  34. if (start !== end) {
  35. list.push(str.substring(start, end));
  36. }
  37. return list;
  38. }
  39. module.exports = parseTokenList;