UNPKG

chrono-node

Version:

A natural language date parser in Javascript

39 lines 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../constants"); const results_1 = require("../../../results"); const AbstractParserWithWordBoundary_1 = require("../../../common/parsers/AbstractParserWithWordBoundary"); const PATTERN_WITH_OPTIONAL_PREFIX = new RegExp(`(?:(?:within|in|for)\\s*)?` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${constants_1.TIME_UNITS_PATTERN})(?=\\W|$)`, "i"); const PATTERN_WITH_PREFIX = new RegExp(`(?:within|in|for)\\s*` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${constants_1.TIME_UNITS_PATTERN})(?=\\W|$)`, "i"); const PATTERN_WITH_PREFIX_STRICT = new RegExp(`(?:within|in|for)\\s*` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${constants_1.TIME_UNITS_NO_ABBR_PATTERN})(?=\\W|$)`, "i"); class ENTimeUnitWithinFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking { constructor(strictMode) { super(); this.strictMode = strictMode; } innerPattern(context) { if (this.strictMode) { return PATTERN_WITH_PREFIX_STRICT; } return context.option.forwardDate ? PATTERN_WITH_OPTIONAL_PREFIX : PATTERN_WITH_PREFIX; } innerExtract(context, match) { if (match[0].match(/^for\s*the\s*\w+/)) { return null; } const timeUnits = (0, constants_1.parseTimeUnits)(match[1]); if (!timeUnits) { return null; } context.debug(() => { console.log(timeUnits); console.log(results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits)); }); return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits); } } exports.default = ENTimeUnitWithinFormatParser; //# sourceMappingURL=ENTimeUnitWithinFormatParser.js.map