import { buildMatchFn } from "../../_lib/buildMatchFn.mjs"; import { buildMatchPatternFn } from "../../_lib/buildMatchPatternFn.mjs"; const matchOrdinalNumberPattern = /^(\d+)e?/i; const parseOrdinalNumberPattern = /\d+/i; const matchEraPatterns = { narrow: /^([fn]\.? ?K\.?)/, abbreviated: /^([fn]\. ?Kr\.?)/, wide: /^((foar|nei) Kristus)/, }; const parseEraPatterns = { any: [/^f/, /^n/], }; const matchQuarterPatterns = { narrow: /^[1234]/i, abbreviated: /^K[1234]/i, wide: /^[1234]e fearnsjier/i, }; const parseQuarterPatterns = { any: [/1/i, /2/i, /3/i, /4/i], }; const matchMonthPatterns = { narrow: /^[jfmasond]/i, abbreviated: /^(jan.|feb.|mrt.|apr.|mai.|jun.|jul.|aug.|sep.|okt.|nov.|des.)/i, wide: /^(jannewaris|febrewaris|maart|april|maaie|juny|july|augustus|septimber|oktober|novimber|desimber)/i, }; const parseMonthPatterns = { narrow: [ /^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i, ], any: [ /^jan/i, /^feb/i, /^m(r|a)/i, /^apr/i, /^mai/i, /^jun/i, /^jul/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^des/i, ], }; const matchDayPatterns = { narrow: /^[smtwf]/i, short: /^(si|mo|ti|wo|to|fr|so)/i, abbreviated: /^(snein|moa|tii|woa|ton|fre|sneon)/i, wide: /^(snein|moandei|tiisdei|woansdei|tongersdei|freed|sneon)/i, }; const parseDayPatterns = { narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], any: [/^sn/i, /^mo/i, /^ti/i, /^wo/i, /^to/i, /^fr/i, /^sn/i], }; const matchDayPeriodPatterns = { any: /^(am|pm|middernacht|middeis|moarns|middei|jûns|nachts)/i, }; const parseDayPeriodPatterns = { any: { am: /^am/i, pm: /^pm/i, midnight: /^middernacht/i, noon: /^middei/i, morning: /moarns/i, afternoon: /^middeis/i, evening: /jûns/i, night: /nachts/i, }, }; export const match = { ordinalNumber: buildMatchPatternFn({ matchPattern: matchOrdinalNumberPattern, parsePattern: parseOrdinalNumberPattern, valueCallback: (value) => parseInt(value, 10), }), era: buildMatchFn({ matchPatterns: matchEraPatterns, defaultMatchWidth: "wide", parsePatterns: parseEraPatterns, defaultParseWidth: "any", }), quarter: buildMatchFn({ matchPatterns: matchQuarterPatterns, defaultMatchWidth: "wide", parsePatterns: parseQuarterPatterns, defaultParseWidth: "any", valueCallback: (index) => index + 1, }), month: buildMatchFn({ matchPatterns: matchMonthPatterns, defaultMatchWidth: "wide", parsePatterns: parseMonthPatterns, defaultParseWidth: "any", }), day: buildMatchFn({ matchPatterns: matchDayPatterns, defaultMatchWidth: "wide", parsePatterns: parseDayPatterns, defaultParseWidth: "any", }), dayPeriod: buildMatchFn({ matchPatterns: matchDayPeriodPatterns, defaultMatchWidth: "any", parsePatterns: parseDayPeriodPatterns, defaultParseWidth: "any", }), };