119 lines
2.8 KiB
JavaScript
119 lines
2.8 KiB
JavaScript
|
import { buildMatchPatternFn } from "../../_lib/buildMatchPatternFn.mjs";
|
|||
|
import { buildMatchFn } from "../../_lib/buildMatchFn.mjs";
|
|||
|
|
|||
|
const matchOrdinalNumberPattern = /^第?\d+(年|四半期|月|週|日|時|分|秒)?/i;
|
|||
|
const parseOrdinalNumberPattern = /\d+/i;
|
|||
|
|
|||
|
const matchEraPatterns = {
|
|||
|
narrow: /^(B\.?C\.?|A\.?D\.?)/i,
|
|||
|
abbreviated: /^(紀元[前後]|西暦)/i,
|
|||
|
wide: /^(紀元[前後]|西暦)/i,
|
|||
|
};
|
|||
|
const parseEraPatterns = {
|
|||
|
narrow: [/^B/i, /^A/i],
|
|||
|
any: [/^(紀元前)/i, /^(西暦|紀元後)/i],
|
|||
|
};
|
|||
|
|
|||
|
const matchQuarterPatterns = {
|
|||
|
narrow: /^[1234]/i,
|
|||
|
abbreviated: /^Q[1234]/i,
|
|||
|
wide: /^第[1234一二三四1234]四半期/i,
|
|||
|
};
|
|||
|
const parseQuarterPatterns = {
|
|||
|
any: [/(1|一|1)/i, /(2|二|2)/i, /(3|三|3)/i, /(4|四|4)/i],
|
|||
|
};
|
|||
|
|
|||
|
const matchMonthPatterns = {
|
|||
|
narrow: /^([123456789]|1[012])/,
|
|||
|
abbreviated: /^([123456789]|1[012])月/i,
|
|||
|
wide: /^([123456789]|1[012])月/i,
|
|||
|
};
|
|||
|
const parseMonthPatterns = {
|
|||
|
any: [
|
|||
|
/^1\D/,
|
|||
|
/^2/,
|
|||
|
/^3/,
|
|||
|
/^4/,
|
|||
|
/^5/,
|
|||
|
/^6/,
|
|||
|
/^7/,
|
|||
|
/^8/,
|
|||
|
/^9/,
|
|||
|
/^10/,
|
|||
|
/^11/,
|
|||
|
/^12/,
|
|||
|
],
|
|||
|
};
|
|||
|
|
|||
|
const matchDayPatterns = {
|
|||
|
narrow: /^[日月火水木金土]/,
|
|||
|
short: /^[日月火水木金土]/,
|
|||
|
abbreviated: /^[日月火水木金土]/,
|
|||
|
wide: /^[日月火水木金土]曜日/,
|
|||
|
};
|
|||
|
const parseDayPatterns = {
|
|||
|
any: [/^日/, /^月/, /^火/, /^水/, /^木/, /^金/, /^土/],
|
|||
|
};
|
|||
|
|
|||
|
const matchDayPeriodPatterns = {
|
|||
|
any: /^(AM|PM|午前|午後|正午|深夜|真夜中|夜|朝)/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: function (value) {
|
|||
|
return 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",
|
|||
|
}),
|
|||
|
};
|