Files
klz-cables.com/.pnpm-store/v10/files/34/3b2772bfb26b360027caed0f5d9766750abcbc64163770afb79c25049599d84bd5fce25ce8a883477792ec7afae2b96c8df3977016046b12ec83043c61b061
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

82 lines
1.7 KiB
Plaintext

import { Parser } from "../Parser.mjs";
import { parseNDigits } from "../utils.mjs";
export class QuarterParser 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: "formatting",
}) ||
match.quarter(dateString, {
width: "narrow",
context: "formatting",
})
);
// 1, 2, 3, 4 (narrow quarter; could be not numerical)
case "QQQQQ":
return match.quarter(dateString, {
width: "narrow",
context: "formatting",
});
// 1st quarter, 2nd quarter, ...
case "QQQQ":
default:
return (
match.quarter(dateString, {
width: "wide",
context: "formatting",
}) ||
match.quarter(dateString, {
width: "abbreviated",
context: "formatting",
}) ||
match.quarter(dateString, {
width: "narrow",
context: "formatting",
})
);
}
}
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",
];
}