AMPMMidnightParser.js 1.2 KB

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