chrono-node
Version:
A natural language date parser in Javascript
30 lines (23 loc) • 1.13 kB
text/typescript
/*
*/
import { MergingRefiner } from "../abstractRefiners";
import { ParsingResult } from "../../results";
import { mergeDateTimeResult } from "../../calculation/mergingCalculation";
export default abstract class AbstractMergeDateTimeRefiner extends MergingRefiner {
abstract patternBetween(): RegExp;
shouldMergeResults(textBetween: string, currentResult: ParsingResult, nextResult: ParsingResult): boolean {
return (
((currentResult.start.isOnlyDate() && nextResult.start.isOnlyTime()) ||
(nextResult.start.isOnlyDate() && currentResult.start.isOnlyTime())) &&
textBetween.match(this.patternBetween()) != null
);
}
mergeResults(textBetween: string, currentResult: ParsingResult, nextResult: ParsingResult): ParsingResult {
const result = currentResult.start.isOnlyDate()
? mergeDateTimeResult(currentResult, nextResult)
: mergeDateTimeResult(nextResult, currentResult);
result.index = currentResult.index;
result.text = currentResult.text + textBetween + nextResult.text;
return result;
}
}