138 lines
4.0 KiB
JavaScript
138 lines
4.0 KiB
JavaScript
import { buildMatchFn } from "../../_lib/buildMatchFn.mjs";
|
||
import { buildMatchPatternFn } from "../../_lib/buildMatchPatternFn.mjs";
|
||
|
||
const matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i;
|
||
const parseOrdinalNumberPattern = /\d+/i;
|
||
|
||
const matchEraPatterns = {
|
||
narrow: /^(پ|د)/i,
|
||
abbreviated: /^(پ-ز|د.ز)/i,
|
||
wide: /^(پێش زاین| دوای زاین)/i,
|
||
};
|
||
const parseEraPatterns = {
|
||
any: [/^د/g, /^پ/g],
|
||
};
|
||
|
||
const matchQuarterPatterns = {
|
||
narrow: /^[1234]/i,
|
||
abbreviated: /^م[1234]چ/i,
|
||
wide: /^(یەکەم|دووەم|سێیەم| چوارەم) (چارەگی)? quarter/i,
|
||
};
|
||
const parseQuarterPatterns = {
|
||
wide: [/چارەگی یەکەم/, /چارەگی دووەم/, /چارەگی سيیەم/, /چارەگی چوارەم/],
|
||
|
||
any: [/1/i, /2/i, /3/i, /4/i],
|
||
};
|
||
|
||
const matchMonthPatterns = {
|
||
narrow: /^(ک-د|ش|ئا|ن|م|ح|ت|ئە|تش-ی|تش-د|ک-ی)/i,
|
||
abbreviated:
|
||
/^(کان-دوو|شوب|ئاد|نیس|مایس|حوز|تەم|ئاب|ئەل|تش-یەک|تش-دوو|کان-یەک)/i,
|
||
wide: /^(کانوونی دووەم|شوبات|ئادار|نیسان|مایس|حوزەیران|تەمموز|ئاب|ئەیلول|تشرینی یەکەم|تشرینی دووەم|کانوونی یەکەم)/i,
|
||
};
|
||
const parseMonthPatterns = {
|
||
narrow: [
|
||
/^ک-د/i,
|
||
/^ش/i,
|
||
/^ئا/i,
|
||
/^ن/i,
|
||
/^م/i,
|
||
/^ح/i,
|
||
/^ت/i,
|
||
/^ئا/i,
|
||
/^ئە/i,
|
||
/^تش-ی/i,
|
||
/^تش-د/i,
|
||
/^ک-ی/i,
|
||
],
|
||
|
||
any: [
|
||
/^کان-دوو/i,
|
||
/^شوب/i,
|
||
/^ئاد/i,
|
||
/^نیس/i,
|
||
/^مایس/i,
|
||
/^حوز/i,
|
||
/^تەم/i,
|
||
/^ئاب/i,
|
||
/^ئەل/i,
|
||
/^تش-یەک/i,
|
||
/^تش-دوو/i,
|
||
/^|کان-یەک/i,
|
||
],
|
||
};
|
||
|
||
const matchDayPatterns = {
|
||
narrow: /^(ش|ی|د|س|چ|پ|هە)/i,
|
||
short: /^(یە-شە|دوو-شە|سێ-شە|چو-شە|پێ-شە|هە|شە)/i,
|
||
abbreviated: /^(یەک-شەم|دوو-شەم|سێ-شەم|چوار-شەم|پێنخ-شەم|هەینی|شەمە)/i,
|
||
wide: /^(یەک شەمە|دوو شەمە|سێ شەمە|چوار شەمە|پێنج شەمە|هەینی|شەمە)/i,
|
||
};
|
||
const parseDayPatterns = {
|
||
narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
|
||
any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],
|
||
};
|
||
|
||
const matchDayPeriodPatterns = {
|
||
narrow: /^(پ|د|ن-ش|ن| (بەیانی|دوای نیوەڕۆ|ئێوارە|شەو))/i,
|
||
abbreviated: /^(پ-ن|د-ن|نیوە شەو|نیوەڕۆ|بەیانی|دوای نیوەڕۆ|ئێوارە|شەو)/,
|
||
wide: /^(پێش نیوەڕۆ|دوای نیوەڕۆ|نیوەڕۆ|نیوە شەو|لەبەیانیدا|لەدواینیوەڕۆدا|لە ئێوارەدا|لە شەودا)/,
|
||
any: /^(پ|د|بەیانی|نیوەڕۆ|ئێوارە|شەو)/,
|
||
};
|
||
const parseDayPeriodPatterns = {
|
||
any: {
|
||
am: /^د/i,
|
||
pm: /^پ/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: "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",
|
||
}),
|
||
};
|