ISODayParser.cjs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. "use strict";
  2. exports.ISODayParser = void 0;
  3. var _index = require("../../../setISODay.cjs");
  4. var _Parser = require("../Parser.cjs");
  5. var _utils = require("../utils.cjs");
  6. // ISO day of week
  7. class ISODayParser extends _Parser.Parser {
  8. priority = 90;
  9. parse(dateString, token, match) {
  10. const valueCallback = (value) => {
  11. if (value === 0) {
  12. return 7;
  13. }
  14. return value;
  15. };
  16. switch (token) {
  17. // 2
  18. case "i":
  19. case "ii": // 02
  20. return (0, _utils.parseNDigits)(token.length, dateString);
  21. // 2nd
  22. case "io":
  23. return match.ordinalNumber(dateString, { unit: "day" });
  24. // Tue
  25. case "iii":
  26. return (0, _utils.mapValue)(
  27. match.day(dateString, {
  28. width: "abbreviated",
  29. context: "formatting",
  30. }) ||
  31. match.day(dateString, {
  32. width: "short",
  33. context: "formatting",
  34. }) ||
  35. match.day(dateString, {
  36. width: "narrow",
  37. context: "formatting",
  38. }),
  39. valueCallback,
  40. );
  41. // T
  42. case "iiiii":
  43. return (0, _utils.mapValue)(
  44. match.day(dateString, {
  45. width: "narrow",
  46. context: "formatting",
  47. }),
  48. valueCallback,
  49. );
  50. // Tu
  51. case "iiiiii":
  52. return (0, _utils.mapValue)(
  53. match.day(dateString, {
  54. width: "short",
  55. context: "formatting",
  56. }) ||
  57. match.day(dateString, {
  58. width: "narrow",
  59. context: "formatting",
  60. }),
  61. valueCallback,
  62. );
  63. // Tuesday
  64. case "iiii":
  65. default:
  66. return (0, _utils.mapValue)(
  67. match.day(dateString, {
  68. width: "wide",
  69. context: "formatting",
  70. }) ||
  71. match.day(dateString, {
  72. width: "abbreviated",
  73. context: "formatting",
  74. }) ||
  75. match.day(dateString, {
  76. width: "short",
  77. context: "formatting",
  78. }) ||
  79. match.day(dateString, {
  80. width: "narrow",
  81. context: "formatting",
  82. }),
  83. valueCallback,
  84. );
  85. }
  86. }
  87. validate(_date, value) {
  88. return value >= 1 && value <= 7;
  89. }
  90. set(date, _flags, value) {
  91. date = (0, _index.setISODay)(date, value);
  92. date.setHours(0, 0, 0, 0);
  93. return date;
  94. }
  95. incompatibleTokens = [
  96. "y",
  97. "Y",
  98. "u",
  99. "q",
  100. "Q",
  101. "M",
  102. "L",
  103. "w",
  104. "d",
  105. "D",
  106. "E",
  107. "e",
  108. "c",
  109. "t",
  110. "T",
  111. ];
  112. }
  113. exports.ISODayParser = ISODayParser;