path-utils.js 1003 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. 'use strict';
  2. function encodePagesPath(pages) {
  3. pages.forEach(function(page) {
  4. if (!page.path) {
  5. return;
  6. }
  7. page.path = encodePagePath(page.path);
  8. });
  9. return pages;
  10. }
  11. function encodePagePath(path) {
  12. const paths = path.split('/');
  13. paths.forEach(function(item, index) {
  14. paths[index] = encodeURIComponent(item);
  15. });
  16. return paths.join('/');
  17. }
  18. function matchEndWithSlash(path) {
  19. // https://regex101.com/r/Z21fEd/1
  20. return path.match(/(.+?)(\/)?$/);
  21. }
  22. function isEndWithSlash(path) {
  23. const match = matchEndWithSlash(path);
  24. return (match[2] != null);
  25. }
  26. function addSlashToTheEnd(path) {
  27. if (path === '/') {
  28. return path;
  29. }
  30. if (!isEndWithSlash(path)) {
  31. return `${path}/`;
  32. }
  33. return path;
  34. }
  35. function removeLastSlash(path) {
  36. if (path === '/') {
  37. return path;
  38. }
  39. const match = matchEndWithSlash(path);
  40. return match[1];
  41. }
  42. module.exports = {
  43. encodePagePath,
  44. encodePagesPath,
  45. isEndWithSlash,
  46. addSlashToTheEnd,
  47. removeLastSlash,
  48. };