UNPKG

chrono-node

Version:

A natural language date parser in Javascript

65 lines 2.44 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const dayjs_1 = __importDefault(require("dayjs")); const AbstractParserWithWordBoundary_1 = require("../../../../common/parsers/AbstractParserWithWordBoundary"); const constants_1 = require("../constants"); const YEAR_GROUP = 1; const MONTH_GROUP = 2; const DAY_GROUP = 3; class ZHHantDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking { innerPattern() { return new RegExp("(" + "\\d{2,4}|" + "[" + Object.keys(constants_1.NUMBER).join("") + "]{4}|" + "[" + Object.keys(constants_1.NUMBER).join("") + "]{2}" + ")?" + "(?:\\s*)" + "(?:年)?" + "(?:[\\s|,|,]*)" + "(" + "\\d{1,2}|" + "[" + Object.keys(constants_1.NUMBER).join("") + "]{1,2}" + ")" + "(?:\\s*)" + "(?:月)" + "(?:\\s*)" + "(" + "\\d{1,2}|" + "[" + Object.keys(constants_1.NUMBER).join("") + "]{1,2}" + ")?" + "(?:\\s*)" + "(?:日|號)?"); } innerExtract(context, match) { const startMoment = dayjs_1.default(context.refDate); const result = context.createParsingResult(match.index, match[0]); let month = parseInt(match[MONTH_GROUP]); if (isNaN(month)) month = constants_1.zhStringToNumber(match[MONTH_GROUP]); result.start.assign("month", month); if (match[DAY_GROUP]) { let day = parseInt(match[DAY_GROUP]); if (isNaN(day)) day = constants_1.zhStringToNumber(match[DAY_GROUP]); result.start.assign("day", day); } else { result.start.imply("day", startMoment.date()); } if (match[YEAR_GROUP]) { let year = parseInt(match[YEAR_GROUP]); if (isNaN(year)) year = constants_1.zhStringToYear(match[YEAR_GROUP]); result.start.assign("year", year); } else { result.start.imply("year", startMoment.year()); } return result; } } exports.default = ZHHantDateParser; //# sourceMappingURL=ZHHantDateParser.js.map