UNPKG

2.19 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const AbstractParserWithWordBoundary_1 = require("../../../common/parsers/AbstractParserWithWordBoundary");
7const index_1 = require("../../../index");
8const dayjs_1 = require("../../../utils/dayjs");
9const dayjs_2 = __importDefault(require("dayjs"));
10const DATE_GROUP = 1;
11const TIME_OF_DAY_GROUP = 2;
12class NLCasualDateTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {
13 innerPattern(context) {
14 return /(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\W|$)/i;
15 }
16 innerExtract(context, match) {
17 const dateText = match[DATE_GROUP].toLowerCase();
18 const timeText = match[TIME_OF_DAY_GROUP].toLowerCase();
19 const component = context.createParsingComponents();
20 const targetDate = dayjs_2.default(context.refDate);
21 switch (dateText) {
22 case "gisteren":
23 dayjs_1.assignSimilarDate(component, targetDate.add(-1, "day"));
24 break;
25 case "van":
26 dayjs_1.assignSimilarDate(component, targetDate);
27 break;
28 case "morgen":
29 dayjs_1.assignTheNextDay(component, targetDate);
30 break;
31 }
32 switch (timeText) {
33 case "ochtend":
34 component.imply("meridiem", index_1.Meridiem.AM);
35 component.imply("hour", 6);
36 break;
37 case "middag":
38 component.imply("meridiem", index_1.Meridiem.AM);
39 component.imply("hour", 12);
40 break;
41 case "namiddag":
42 component.imply("meridiem", index_1.Meridiem.PM);
43 component.imply("hour", 15);
44 break;
45 case "avond":
46 component.imply("meridiem", index_1.Meridiem.PM);
47 component.imply("hour", 20);
48 break;
49 }
50 return component;
51 }
52}
53exports.default = NLCasualDateTimeParser;