DayOfYearParser.cjs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. "use strict";
  2. exports.DayOfYearParser = void 0;
  3. var _constants = require("../constants.cjs");
  4. var _Parser = require("../Parser.cjs");
  5. var _utils = require("../utils.cjs");
  6. class DayOfYearParser extends _Parser.Parser {
  7. priority = 90;
  8. subpriority = 1;
  9. parse(dateString, token, match) {
  10. switch (token) {
  11. case "D":
  12. case "DD":
  13. return (0, _utils.parseNumericPattern)(
  14. _constants.numericPatterns.dayOfYear,
  15. dateString,
  16. );
  17. case "Do":
  18. return match.ordinalNumber(dateString, { unit: "date" });
  19. default:
  20. return (0, _utils.parseNDigits)(token.length, dateString);
  21. }
  22. }
  23. validate(date, value) {
  24. const year = date.getFullYear();
  25. const isLeapYear = (0, _utils.isLeapYearIndex)(year);
  26. if (isLeapYear) {
  27. return value >= 1 && value <= 366;
  28. } else {
  29. return value >= 1 && value <= 365;
  30. }
  31. }
  32. set(date, _flags, value) {
  33. date.setMonth(0, value);
  34. date.setHours(0, 0, 0, 0);
  35. return date;
  36. }
  37. incompatibleTokens = [
  38. "Y",
  39. "R",
  40. "q",
  41. "Q",
  42. "M",
  43. "L",
  44. "w",
  45. "I",
  46. "d",
  47. "E",
  48. "i",
  49. "e",
  50. "c",
  51. "t",
  52. "T",
  53. ];
  54. }
  55. exports.DayOfYearParser = DayOfYearParser;