UNPKG

chrono-node

Version:

A natural language date parser in Javascript

54 lines 2.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const AbstractParserWithWordBoundary_1 = require("../../../common/parsers/AbstractParserWithWordBoundary"); const types_1 = require("../../../types"); const dayjs_1 = require("../../../utils/dayjs"); const dayjs_2 = __importDefault(require("dayjs")); const DATE_GROUP = 1; const TIME_OF_DAY_GROUP = 2; class NLCasualDateTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking { innerPattern(context) { return /(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\W|$)/i; } innerExtract(context, match) { const dateText = match[DATE_GROUP].toLowerCase(); const timeText = match[TIME_OF_DAY_GROUP].toLowerCase(); const component = context.createParsingComponents(); const targetDate = dayjs_2.default(context.refDate); switch (dateText) { case "gisteren": dayjs_1.assignSimilarDate(component, targetDate.add(-1, "day")); break; case "van": dayjs_1.assignSimilarDate(component, targetDate); break; case "morgen": dayjs_1.assignTheNextDay(component, targetDate); break; } switch (timeText) { case "ochtend": component.imply("meridiem", types_1.Meridiem.AM); component.imply("hour", 6); break; case "middag": component.imply("meridiem", types_1.Meridiem.AM); component.imply("hour", 12); break; case "namiddag": component.imply("meridiem", types_1.Meridiem.PM); component.imply("hour", 15); break; case "avond": component.imply("meridiem", types_1.Meridiem.PM); component.imply("hour", 20); break; } return component; } } exports.default = NLCasualDateTimeParser; //# sourceMappingURL=NLCasualDateTimeParser.js.map