QuarterParser.cjs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. "use strict";
  2. exports.QuarterParser = void 0;
  3. var _Parser = require("../Parser.cjs");
  4. var _utils = require("../utils.cjs");
  5. class QuarterParser extends _Parser.Parser {
  6. priority = 120;
  7. parse(dateString, token, match) {
  8. switch (token) {
  9. // 1, 2, 3, 4
  10. case "Q":
  11. case "QQ": // 01, 02, 03, 04
  12. return (0, _utils.parseNDigits)(token.length, dateString);
  13. // 1st, 2nd, 3rd, 4th
  14. case "Qo":
  15. return match.ordinalNumber(dateString, { unit: "quarter" });
  16. // Q1, Q2, Q3, Q4
  17. case "QQQ":
  18. return (
  19. match.quarter(dateString, {
  20. width: "abbreviated",
  21. context: "formatting",
  22. }) ||
  23. match.quarter(dateString, {
  24. width: "narrow",
  25. context: "formatting",
  26. })
  27. );
  28. // 1, 2, 3, 4 (narrow quarter; could be not numerical)
  29. case "QQQQQ":
  30. return match.quarter(dateString, {
  31. width: "narrow",
  32. context: "formatting",
  33. });
  34. // 1st quarter, 2nd quarter, ...
  35. case "QQQQ":
  36. default:
  37. return (
  38. match.quarter(dateString, {
  39. width: "wide",
  40. context: "formatting",
  41. }) ||
  42. match.quarter(dateString, {
  43. width: "abbreviated",
  44. context: "formatting",
  45. }) ||
  46. match.quarter(dateString, {
  47. width: "narrow",
  48. context: "formatting",
  49. })
  50. );
  51. }
  52. }
  53. validate(_date, value) {
  54. return value >= 1 && value <= 4;
  55. }
  56. set(date, _flags, value) {
  57. date.setMonth((value - 1) * 3, 1);
  58. date.setHours(0, 0, 0, 0);
  59. return date;
  60. }
  61. incompatibleTokens = [
  62. "Y",
  63. "R",
  64. "q",
  65. "M",
  66. "L",
  67. "w",
  68. "I",
  69. "d",
  70. "D",
  71. "i",
  72. "e",
  73. "c",
  74. "t",
  75. "T",
  76. ];
  77. }
  78. exports.QuarterParser = QuarterParser;