DayPeriodParser.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { Parser } from "../Parser.js";
  2. import { dayPeriodEnumToHours } from "../utils.js";
  3. // in the morning, in the afternoon, in the evening, at night
  4. export class DayPeriodParser extends Parser {
  5. priority = 80;
  6. parse(dateString, token, match) {
  7. switch (token) {
  8. case "B":
  9. case "BB":
  10. case "BBB":
  11. return (
  12. match.dayPeriod(dateString, {
  13. width: "abbreviated",
  14. context: "formatting",
  15. }) ||
  16. match.dayPeriod(dateString, {
  17. width: "narrow",
  18. context: "formatting",
  19. })
  20. );
  21. case "BBBBB":
  22. return match.dayPeriod(dateString, {
  23. width: "narrow",
  24. context: "formatting",
  25. });
  26. case "BBBB":
  27. default:
  28. return (
  29. match.dayPeriod(dateString, {
  30. width: "wide",
  31. context: "formatting",
  32. }) ||
  33. match.dayPeriod(dateString, {
  34. width: "abbreviated",
  35. context: "formatting",
  36. }) ||
  37. match.dayPeriod(dateString, {
  38. width: "narrow",
  39. context: "formatting",
  40. })
  41. );
  42. }
  43. }
  44. set(date, _flags, value) {
  45. date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);
  46. return date;
  47. }
  48. incompatibleTokens = ["a", "b", "t", "T"];
  49. }