UNPKG

chrono-node

Version:

A natural language date parser in Javascript

48 lines 2.13 kB
import { Meridiem } from "../../../index.js"; import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary.js"; import { assignSimilarDate, implySimilarTime } from "../../../utils/dates.js"; const PATTERN = /(?:questo|questa)?\s{0,3}(mattina|pomeriggio|sera|notte|mezzanotte|mezzogiorno)(?=\W|$)/i; export default class ITCasualTimeParser extends AbstractParserWithWordBoundaryChecking { innerPattern() { return PATTERN; } innerExtract(context, match) { const targetDate = context.refDate; const component = context.createParsingComponents(); switch (match[1].toLowerCase()) { case "pomeriggio": component.imply("meridiem", Meridiem.PM); component.imply("hour", 15); component.addTag("casualReference/afternoon"); break; case "sera": case "notte": component.imply("meridiem", Meridiem.PM); component.imply("hour", 20); component.addTag("casualReference/evening"); break; case "mezzanotte": const nextDay = new Date(targetDate.getTime()); nextDay.setDate(nextDay.getDate() + 1); assignSimilarDate(component, nextDay); implySimilarTime(component, nextDay); component.imply("hour", 0); component.imply("minute", 0); component.imply("second", 0); component.addTag("casualReference/midnight"); break; case "mattina": component.imply("meridiem", Meridiem.AM); component.imply("hour", 6); component.addTag("casualReference/morning"); break; case "mezzogiorno": component.imply("meridiem", Meridiem.AM); component.imply("hour", 12); component.addTag("casualReference/noon"); break; } return component; } } //# sourceMappingURL=ITCasualTimeParser.js.map