UNPKG

chrono-node

Version:

A natural language date parser in Javascript

68 lines 2.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getBackwardDaysToWeekday = exports.getDaysForwardToWeekday = exports.getDaysToWeekdayClosest = exports.getDaysToWeekday = exports.createParsingComponentsAtWeekday = void 0; const types_1 = require("../../types"); const results_1 = require("../../results"); const timeunits_1 = require("../../utils/timeunits"); function createParsingComponentsAtWeekday(reference, weekday, modifier) { const refDate = reference.getDateWithAdjustedTimezone(); const daysToWeekday = getDaysToWeekday(refDate, weekday, modifier); let components = new results_1.ParsingComponents(reference); components = timeunits_1.addImpliedTimeUnits(components, { "day": daysToWeekday }); components.assign("weekday", weekday); return components; } exports.createParsingComponentsAtWeekday = createParsingComponentsAtWeekday; function getDaysToWeekday(refDate, weekday, modifier) { const refWeekday = refDate.getDay(); switch (modifier) { case "this": return getDaysForwardToWeekday(refDate, weekday); case "last": return getBackwardDaysToWeekday(refDate, weekday); case "next": if (refWeekday == types_1.Weekday.SUNDAY) { return weekday == types_1.Weekday.SUNDAY ? 7 : weekday; } if (refWeekday == types_1.Weekday.SATURDAY) { if (weekday == types_1.Weekday.SATURDAY) return 7; if (weekday == types_1.Weekday.SUNDAY) return 8; return 1 + weekday; } if (weekday < refWeekday && weekday != types_1.Weekday.SUNDAY) { return getDaysForwardToWeekday(refDate, weekday); } else { return getDaysForwardToWeekday(refDate, weekday) + 7; } } return getDaysToWeekdayClosest(refDate, weekday); } exports.getDaysToWeekday = getDaysToWeekday; function getDaysToWeekdayClosest(refDate, weekday) { const backward = getBackwardDaysToWeekday(refDate, weekday); const forward = getDaysForwardToWeekday(refDate, weekday); return forward < -backward ? forward : backward; } exports.getDaysToWeekdayClosest = getDaysToWeekdayClosest; function getDaysForwardToWeekday(refDate, weekday) { const refWeekday = refDate.getDay(); let forwardCount = weekday - refWeekday; if (forwardCount < 0) { forwardCount += 7; } return forwardCount; } exports.getDaysForwardToWeekday = getDaysForwardToWeekday; function getBackwardDaysToWeekday(refDate, weekday) { const refWeekday = refDate.getDay(); let backwardCount = weekday - refWeekday; if (backwardCount >= 0) { backwardCount -= 7; } return backwardCount; } exports.getBackwardDaysToWeekday = getBackwardDaysToWeekday; //# sourceMappingURL=weekdays.js.map