LocalWeekYearParser.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
  2. import _createClass from "@babel/runtime/helpers/esm/createClass";
  3. import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
  4. import _inherits from "@babel/runtime/helpers/esm/inherits";
  5. import _createSuper from "@babel/runtime/helpers/esm/createSuper";
  6. import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
  7. import { Parser } from "../Parser.js";
  8. import { parseNDigits, normalizeTwoDigitYear, mapValue } from "../utils.js";
  9. import getUTCWeekYear from "../../../_lib/getUTCWeekYear/index.js";
  10. import startOfUTCWeek from "../../../_lib/startOfUTCWeek/index.js";
  11. // Local week-numbering year
  12. export var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {
  13. _inherits(LocalWeekYearParser, _Parser);
  14. var _super = _createSuper(LocalWeekYearParser);
  15. function LocalWeekYearParser() {
  16. var _this;
  17. _classCallCheck(this, LocalWeekYearParser);
  18. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  19. args[_key] = arguments[_key];
  20. }
  21. _this = _super.call.apply(_super, [this].concat(args));
  22. _defineProperty(_assertThisInitialized(_this), "priority", 130);
  23. _defineProperty(_assertThisInitialized(_this), "incompatibleTokens", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);
  24. return _this;
  25. }
  26. _createClass(LocalWeekYearParser, [{
  27. key: "parse",
  28. value: function parse(dateString, token, match) {
  29. var valueCallback = function valueCallback(year) {
  30. return {
  31. year: year,
  32. isTwoDigitYear: token === 'YY'
  33. };
  34. };
  35. switch (token) {
  36. case 'Y':
  37. return mapValue(parseNDigits(4, dateString), valueCallback);
  38. case 'Yo':
  39. return mapValue(match.ordinalNumber(dateString, {
  40. unit: 'year'
  41. }), valueCallback);
  42. default:
  43. return mapValue(parseNDigits(token.length, dateString), valueCallback);
  44. }
  45. }
  46. }, {
  47. key: "validate",
  48. value: function validate(_date, value) {
  49. return value.isTwoDigitYear || value.year > 0;
  50. }
  51. }, {
  52. key: "set",
  53. value: function set(date, flags, value, options) {
  54. var currentYear = getUTCWeekYear(date, options);
  55. if (value.isTwoDigitYear) {
  56. var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);
  57. date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);
  58. date.setUTCHours(0, 0, 0, 0);
  59. return startOfUTCWeek(date, options);
  60. }
  61. var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;
  62. date.setUTCFullYear(year, 0, options.firstWeekContainsDate);
  63. date.setUTCHours(0, 0, 0, 0);
  64. return startOfUTCWeek(date, options);
  65. }
  66. }]);
  67. return LocalWeekYearParser;
  68. }(Parser);