chrono-node
Version:
A natural language date parser in Javascript
27 lines • 1.4 kB
JavaScript
import { MergingRefiner } from "../../../common/abstractRefiners.js";
import { ParsingComponents, ParsingResult, ReferenceWithTimezone } from "../../../results.js";
import { parseTimeUnits } from "../constants.js";
import { reverseTimeUnits } from "../../../utils/timeunits.js";
function IsPositiveFollowingReference(result) {
return result.text.match(/^[+-]/i) != null;
}
function IsNegativeFollowingReference(result) {
return result.text.match(/^-/i) != null;
}
export default class ENMergeRelativeAfterDateRefiner extends MergingRefiner {
shouldMergeResults(textBetween, currentResult, nextResult) {
if (!textBetween.match(/^\s*$/i)) {
return false;
}
return IsPositiveFollowingReference(nextResult) || IsNegativeFollowingReference(nextResult);
}
mergeResults(textBetween, currentResult, nextResult, context) {
let timeUnits = parseTimeUnits(nextResult.text);
if (IsNegativeFollowingReference(nextResult)) {
timeUnits = reverseTimeUnits(timeUnits);
}
const components = ParsingComponents.createRelativeFromReference(new ReferenceWithTimezone(currentResult.start.date()), timeUnits);
return new ParsingResult(currentResult.reference, currentResult.index, `${currentResult.text}${textBetween}${nextResult.text}`, components);
}
}
//# sourceMappingURL=ENMergeRelativeAfterDateRefiner.js.map