MonthParser.cjs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. "use strict";
  2. exports.MonthParser = void 0;
  3. var _constants = require("../constants.cjs");
  4. var _Parser = require("../Parser.cjs");
  5. var _utils = require("../utils.cjs");
  6. class MonthParser extends _Parser.Parser {
  7. incompatibleTokens = [
  8. "Y",
  9. "R",
  10. "q",
  11. "Q",
  12. "L",
  13. "w",
  14. "I",
  15. "D",
  16. "i",
  17. "e",
  18. "c",
  19. "t",
  20. "T",
  21. ];
  22. priority = 110;
  23. parse(dateString, token, match) {
  24. const valueCallback = (value) => value - 1;
  25. switch (token) {
  26. // 1, 2, ..., 12
  27. case "M":
  28. return (0, _utils.mapValue)(
  29. (0, _utils.parseNumericPattern)(
  30. _constants.numericPatterns.month,
  31. dateString,
  32. ),
  33. valueCallback,
  34. );
  35. // 01, 02, ..., 12
  36. case "MM":
  37. return (0, _utils.mapValue)(
  38. (0, _utils.parseNDigits)(2, dateString),
  39. valueCallback,
  40. );
  41. // 1st, 2nd, ..., 12th
  42. case "Mo":
  43. return (0, _utils.mapValue)(
  44. match.ordinalNumber(dateString, {
  45. unit: "month",
  46. }),
  47. valueCallback,
  48. );
  49. // Jan, Feb, ..., Dec
  50. case "MMM":
  51. return (
  52. match.month(dateString, {
  53. width: "abbreviated",
  54. context: "formatting",
  55. }) ||
  56. match.month(dateString, { width: "narrow", context: "formatting" })
  57. );
  58. // J, F, ..., D
  59. case "MMMMM":
  60. return match.month(dateString, {
  61. width: "narrow",
  62. context: "formatting",
  63. });
  64. // January, February, ..., December
  65. case "MMMM":
  66. default:
  67. return (
  68. match.month(dateString, { width: "wide", context: "formatting" }) ||
  69. match.month(dateString, {
  70. width: "abbreviated",
  71. context: "formatting",
  72. }) ||
  73. match.month(dateString, { width: "narrow", context: "formatting" })
  74. );
  75. }
  76. }
  77. validate(_date, value) {
  78. return value >= 0 && value <= 11;
  79. }
  80. set(date, _flags, value) {
  81. date.setMonth(value, 1);
  82. date.setHours(0, 0, 0, 0);
  83. return date;
  84. }
  85. }
  86. exports.MonthParser = MonthParser;