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