import { buildMatchFn } from "../../_lib/buildMatchFn.mjs"; import { buildMatchPatternFn } from "../../_lib/buildMatchPatternFn.mjs"; const matchOrdinalNumberPattern = /^(\d+)(-ლი|-ე)?/i; const parseOrdinalNumberPattern = /\d+/i; const matchEraPatterns = { narrow: /^(ჩვ?\.წ)/i, abbreviated: /^(ჩვ?\.წ)/i, wide: /^(ჩვენს წელთაღრიცხვამდე|ქრისტეშობამდე|ჩვენი წელთაღრიცხვით|ქრისტეშობიდან)/i, }; const parseEraPatterns = { any: [ /^(ჩვენს წელთაღრიცხვამდე|ქრისტეშობამდე)/i, /^(ჩვენი წელთაღრიცხვით|ქრისტეშობიდან)/i, ], }; const matchQuarterPatterns = { narrow: /^[1234]/i, abbreviated: /^[1234]-(ლი|ე)? კვ/i, wide: /^[1234]-(ლი|ე)? კვარტალი/i, }; const parseQuarterPatterns = { any: [/1/i, /2/i, /3/i, /4/i], }; const matchMonthPatterns = { any: /^(ია|თე|მა|აპ|მს|ვნ|ვლ|აგ|სე|ოქ|ნო|დე)/i, }; const parseMonthPatterns = { any: [ /^ია/i, /^თ/i, /^მარ/i, /^აპ/i, /^მაი/i, /^ი?ვნ/i, /^ი?ვლ/i, /^აგ/i, /^ს/i, /^ო/i, /^ნ/i, /^დ/i, ], }; const matchDayPatterns = { narrow: /^(კვ|ორ|სა|ოთ|ხუ|პა|შა)/i, short: /^(კვი|ორშ|სამ|ოთხ|ხუთ|პარ|შაბ)/i, wide: /^(კვირა|ორშაბათი|სამშაბათი|ოთხშაბათი|ხუთშაბათი|პარასკევი|შაბათი)/i, }; const parseDayPatterns = { any: [/^კვ/i, /^ორ/i, /^სა/i, /^ოთ/i, /^ხუ/i, /^პა/i, /^შა/i], }; const matchDayPeriodPatterns = { any: /^([ap]\.?\s?m\.?|შუაღ|დილ)/i, }; const parseDayPeriodPatterns = { any: { am: /^a/i, pm: /^p/i, midnight: /^შუაღ/i, noon: /^შუადღ/i, morning: /^დილ/i, afternoon: /ნაშუადღევს/i, evening: /საღამო/i, night: /ღამ/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: "any", parsePatterns: parseMonthPatterns, defaultParseWidth: "any", }), day: buildMatchFn({ matchPatterns: matchDayPatterns, defaultMatchWidth: "wide", parsePatterns: parseDayPatterns, defaultParseWidth: "any", }), dayPeriod: buildMatchFn({ matchPatterns: matchDayPeriodPatterns, defaultMatchWidth: "any", parsePatterns: parseDayPeriodPatterns, defaultParseWidth: "any", }), };