parseTokenList.js 778 B

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