12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { Parser } from "../Parser.js";
- import { parseNDigits } from "../utils.js";
- export class StandAloneQuarterParser extends Parser {
- priority = 120;
- parse(dateString, token, match) {
- switch (token) {
- // 1, 2, 3, 4
- case "q":
- case "qq": // 01, 02, 03, 04
- return parseNDigits(token.length, dateString);
- // 1st, 2nd, 3rd, 4th
- case "qo":
- return match.ordinalNumber(dateString, { unit: "quarter" });
- // Q1, Q2, Q3, Q4
- case "qqq":
- return (
- match.quarter(dateString, {
- width: "abbreviated",
- context: "standalone",
- }) ||
- match.quarter(dateString, {
- width: "narrow",
- context: "standalone",
- })
- );
- // 1, 2, 3, 4 (narrow quarter; could be not numerical)
- case "qqqqq":
- return match.quarter(dateString, {
- width: "narrow",
- context: "standalone",
- });
- // 1st quarter, 2nd quarter, ...
- case "qqqq":
- default:
- return (
- match.quarter(dateString, {
- width: "wide",
- context: "standalone",
- }) ||
- match.quarter(dateString, {
- width: "abbreviated",
- context: "standalone",
- }) ||
- match.quarter(dateString, {
- width: "narrow",
- context: "standalone",
- })
- );
- }
- }
- validate(_date, value) {
- return value >= 1 && value <= 4;
- }
- set(date, _flags, value) {
- date.setMonth((value - 1) * 3, 1);
- date.setHours(0, 0, 0, 0);
- return date;
- }
- incompatibleTokens = [
- "Y",
- "R",
- "Q",
- "M",
- "L",
- "w",
- "I",
- "d",
- "D",
- "i",
- "e",
- "c",
- "t",
- "T",
- ];
- }
|