Rocky_Mountain_Vending/.pnpm-store/v10/files/a2/5f370e9bf151a707e7494aac1c841e7f939c9f376f7505e02f77a9a79ccc9a5ec9c9dd93b19106eb16eaa8df72e0b823f78f9de3b694b8bccf57a9a0bfbf28
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

82 lines
1.7 KiB
Text

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",
];
}