UNPKG

chrono-node

Version:

A natural language date parser in Javascript

32 lines 1.62 kB
import { TIME_UNITS_PATTERN, parseTimeUnits, TIME_UNITS_NO_ABBR_PATTERN } from "../constants.js"; import { ParsingComponents } from "../../../results.js"; import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary.js"; const PATTERN_WITH_OPTIONAL_PREFIX = new RegExp(`(?:(?:within|in|for)\\s*)?` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i"); const PATTERN_WITH_PREFIX = new RegExp(`(?:within|in|for)\\s*` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i"); const PATTERN_WITH_PREFIX_STRICT = new RegExp(`(?:within|in|for)\\s*` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_NO_ABBR_PATTERN})(?=\\W|$)`, "i"); export default class ENTimeUnitWithinFormatParser extends 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 = parseTimeUnits(match[1]); if (!timeUnits) { return null; } return ParsingComponents.createRelativeFromReference(context.reference, timeUnits); } } //# sourceMappingURL=ENTimeUnitWithinFormatParser.js.map