UNPKG

chrono-node

Version:

A natural language date parser in Javascript

45 lines 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../constants"); const pattern_1 = require("../../../utils/pattern"); const weekdays_1 = require("../../../common/calculation/weekdays"); const AbstractParserWithWordBoundaryChecking_1 = require("./AbstractParserWithWordBoundaryChecking"); const PREFIX_GROUP = 1; const WEEKDAY_GROUP = 2; const POSTFIX_GROUP = 3; class UKWeekdayParser extends AbstractParserWithWordBoundaryChecking_1.AbstractParserWithLeftRightBoundaryChecking { innerPatternString(context) { return (`(?:(?:,|\\(|()\\s*)?` + `(?:в\\s*?)?` + `(?:у\\s*?)?` + `(?:(цей|минулого|минулий|попередній|попереднього|наступного|наступний|наступному)\\s*)?` + `(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})` + `(?:\\s*(?:,|\\)|)))?` + `(?:\\s*(на|у|в)\\s*(цьому|минулому|наступному)\\s*тижні)?`); } innerExtract(context, match) { const dayOfWeek = match[WEEKDAY_GROUP].toLocaleLowerCase(); const weekday = constants_1.WEEKDAY_DICTIONARY[dayOfWeek]; const prefix = match[PREFIX_GROUP]; const postfix = match[POSTFIX_GROUP]; let modifierWord = prefix || postfix; modifierWord = modifierWord || ""; modifierWord = modifierWord.toLocaleLowerCase(); let modifier = null; if (modifierWord == "минулого" || modifierWord == "минулий" || modifierWord == "попередній" || modifierWord == "попереднього") { modifier = "last"; } else if (modifierWord == "наступного" || modifierWord == "наступний") { modifier = "next"; } else if (modifierWord == "цей" || modifierWord == "цього" || modifierWord == "цьому") { modifier = "this"; } return weekdays_1.createParsingComponentsAtWeekday(context.reference, weekday, modifier); } } exports.default = UKWeekdayParser; //# sourceMappingURL=UKWeekdayParser.js.map