chrono-node 2.6.6 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/calculation/mergingCalculation.js +2 -0
- package/dist/cjs/calculation/mergingCalculation.js.map +1 -1
- package/dist/cjs/common/casualReferences.js +13 -3
- package/dist/cjs/common/casualReferences.js.map +1 -1
- package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.d.ts +2 -1
- package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.js +9 -5
- package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENCasualDateParser.js +12 -6
- package/dist/cjs/locales/en/parsers/ENCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
- package/dist/cjs/locales/en/parsers/ENCasualTimeParser.js +15 -6
- package/dist/cjs/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js +23 -22
- package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js +3 -2
- package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.d.ts +11 -0
- package/dist/cjs/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.js +24 -0
- package/dist/cjs/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.js.map +1 -0
- package/dist/cjs/locales/ru/parsers/RUCasualDateParser.d.ts +3 -4
- package/dist/cjs/locales/ru/parsers/RUCasualDateParser.js +4 -9
- package/dist/cjs/locales/ru/parsers/RUCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.d.ts +3 -4
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js +4 -10
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.d.ts +3 -4
- package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.js +14 -19
- package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUMonthNameParser.d.ts +3 -4
- package/dist/cjs/locales/ru/parsers/RUMonthNameParser.js +10 -14
- package/dist/cjs/locales/ru/parsers/RUMonthNameParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.d.ts +3 -4
- package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js +4 -8
- package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.d.ts +3 -4
- package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +4 -8
- package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.d.ts +3 -4
- package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +4 -8
- package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.d.ts +3 -0
- package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +6 -3
- package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUWeekdayParser.d.ts +3 -4
- package/dist/cjs/locales/ru/parsers/RUWeekdayParser.js +9 -14
- package/dist/cjs/locales/ru/parsers/RUWeekdayParser.js.map +1 -1
- package/dist/cjs/results.d.ts +5 -0
- package/dist/cjs/results.js +30 -2
- package/dist/cjs/results.js.map +1 -1
- package/dist/cjs/types.d.ts +2 -0
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/calculation/mergingCalculation.js +2 -0
- package/dist/esm/calculation/mergingCalculation.js.map +1 -1
- package/dist/esm/common/casualReferences.js +13 -3
- package/dist/esm/common/casualReferences.js.map +1 -1
- package/dist/esm/common/parsers/AbstractParserWithWordBoundary.d.ts +2 -1
- package/dist/esm/common/parsers/AbstractParserWithWordBoundary.js +9 -5
- package/dist/esm/common/parsers/AbstractParserWithWordBoundary.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENCasualDateParser.js +12 -6
- package/dist/esm/locales/en/parsers/ENCasualDateParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
- package/dist/esm/locales/en/parsers/ENCasualTimeParser.js +15 -6
- package/dist/esm/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js +23 -22
- package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js +3 -2
- package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.d.ts +11 -0
- package/dist/esm/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.js +19 -0
- package/dist/esm/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.js.map +1 -0
- package/dist/esm/locales/ru/parsers/RUCasualDateParser.d.ts +3 -4
- package/dist/esm/locales/ru/parsers/RUCasualDateParser.js +4 -9
- package/dist/esm/locales/ru/parsers/RUCasualDateParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUCasualTimeParser.d.ts +3 -4
- package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js +4 -10
- package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUMonthNameLittleEndianParser.d.ts +3 -4
- package/dist/esm/locales/ru/parsers/RUMonthNameLittleEndianParser.js +15 -20
- package/dist/esm/locales/ru/parsers/RUMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUMonthNameParser.d.ts +3 -4
- package/dist/esm/locales/ru/parsers/RUMonthNameParser.js +11 -15
- package/dist/esm/locales/ru/parsers/RUMonthNameParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.d.ts +3 -4
- package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js +5 -9
- package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.d.ts +3 -4
- package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +5 -9
- package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.d.ts +3 -4
- package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +5 -9
- package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.d.ts +3 -0
- package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +6 -3
- package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUWeekdayParser.d.ts +3 -4
- package/dist/esm/locales/ru/parsers/RUWeekdayParser.js +10 -15
- package/dist/esm/locales/ru/parsers/RUWeekdayParser.js.map +1 -1
- package/dist/esm/results.d.ts +5 -0
- package/dist/esm/results.js +30 -2
- package/dist/esm/results.js.map +1 -1
- package/dist/esm/types.d.ts +2 -0
- package/dist/esm/types.js.map +1 -1
- package/package.json +1 -1
- package/src/calculation/mergingCalculation.ts +2 -0
- package/src/common/casualReferences.ts +13 -3
- package/src/common/parsers/AbstractParserWithWordBoundary.ts +17 -9
- package/src/locales/en/parsers/ENCasualDateParser.ts +12 -7
- package/src/locales/en/parsers/ENCasualTimeParser.ts +15 -6
- package/src/locales/en/parsers/ENTimeExpressionParser.ts +24 -22
- package/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +4 -3
- package/src/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.ts +25 -0
- package/src/locales/ru/parsers/RUCasualDateParser.ts +4 -14
- package/src/locales/ru/parsers/RUCasualTimeParser.ts +4 -14
- package/src/locales/ru/parsers/RUMonthNameLittleEndianParser.ts +16 -26
- package/src/locales/ru/parsers/RUMonthNameParser.ts +13 -20
- package/src/locales/ru/parsers/RURelativeDateFormatParser.ts +6 -14
- package/src/locales/ru/parsers/RUTimeUnitAgoFormatParser.ts +5 -11
- package/src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts +4 -13
- package/src/locales/ru/parsers/RUTimeUnitWithinFormatParser.ts +10 -4
- package/src/locales/ru/parsers/RUWeekdayParser.ts +12 -20
- package/src/results.ts +34 -4
- package/src/types.ts +11 -1
- package/test/en/en.test.ts +3 -3
- package/test/en/en_time_units_within.test.ts +22 -1
- package/test/result.test.ts +65 -3
- package/test/ru/ru_relative.test.ts +44 -11
- package/test/ru/ru_time_units_casual_relative.test.ts +96 -30
- package/test/system.test.ts +37 -0
- package/test/uk/uk_relative.test.ts +44 -11
- package/test/uk/uk_time_units_casual_relative.test.ts +40 -10
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ParsingContext } from "../../../chrono.js";
|
|
2
2
|
import { ParsingComponents } from "../../../results.js";
|
|
3
|
-
import {
|
|
4
|
-
export default class RUTimeUnitCasualRelativeFormatParser extends
|
|
5
|
-
|
|
6
|
-
innerPattern(): RegExp;
|
|
3
|
+
import { AbstractParserWithLeftRightBoundaryChecking } from "./AbstractParserWithWordBoundaryChecking.js";
|
|
4
|
+
export default class RUTimeUnitCasualRelativeFormatParser extends AbstractParserWithLeftRightBoundaryChecking {
|
|
5
|
+
innerPatternString(context: ParsingContext): string;
|
|
7
6
|
innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents;
|
|
8
7
|
}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import { TIME_UNITS_PATTERN, parseTimeUnits
|
|
1
|
+
import { TIME_UNITS_PATTERN, parseTimeUnits } from "../constants.js";
|
|
2
2
|
import { ParsingComponents } from "../../../results.js";
|
|
3
|
-
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary.js";
|
|
4
3
|
import { reverseTimeUnits } from "../../../utils/timeunits.js";
|
|
5
|
-
|
|
6
|
-
export default class RUTimeUnitCasualRelativeFormatParser extends
|
|
7
|
-
|
|
8
|
-
return
|
|
9
|
-
}
|
|
10
|
-
innerPattern() {
|
|
11
|
-
return PATTERN;
|
|
4
|
+
import { AbstractParserWithLeftRightBoundaryChecking } from "./AbstractParserWithWordBoundaryChecking.js";
|
|
5
|
+
export default class RUTimeUnitCasualRelativeFormatParser extends AbstractParserWithLeftRightBoundaryChecking {
|
|
6
|
+
innerPatternString(context) {
|
|
7
|
+
return `(эти|последние|прошлые|следующие|после|спустя|через|\\+|-)\\s*(${TIME_UNITS_PATTERN})`;
|
|
12
8
|
}
|
|
13
9
|
innerExtract(context, match) {
|
|
14
10
|
const prefix = match[1].toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RUTimeUnitCasualRelativeFormatParser.js","sourceRoot":"","sources":["../../../../../src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"RUTimeUnitCasualRelativeFormatParser.js","sourceRoot":"","sources":["../../../../../src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAe,MAAM,cAAc,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,2CAA2C,EAAE,MAAM,0CAA0C,CAAC;AAEvG,MAAM,CAAC,OAAO,OAAO,oCAAqC,SAAQ,2CAA2C;IACzG,kBAAkB,CAAC,OAAuB;QACtC,OAAO,kEAAkE,kBAAkB,GAAG,CAAC;IACnG,CAAC;IAED,YAAY,CAAC,OAAuB,EAAE,KAAuB;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,QAAQ,MAAM,EAAE;YACZ,KAAK,WAAW,CAAC;YACjB,KAAK,SAAS,CAAC;YACf,KAAK,GAAG;gBACJ,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBACxC,MAAM;SACb;QAED,OAAO,iBAAiB,CAAC,2BAA2B,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvF,CAAC;CACJ"}
|
|
@@ -2,6 +2,9 @@ import { ParsingContext } from "../../../chrono.js";
|
|
|
2
2
|
import { ParsingComponents } from "../../../results.js";
|
|
3
3
|
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary.js";
|
|
4
4
|
export default class RUTimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryChecking {
|
|
5
|
+
private readonly patternWithPrefix;
|
|
6
|
+
private readonly patternWithoutPrefix;
|
|
7
|
+
constructor();
|
|
5
8
|
patternLeftBoundary(): string;
|
|
6
9
|
innerPattern(context: ParsingContext): RegExp;
|
|
7
10
|
innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents;
|
|
@@ -2,14 +2,17 @@ import { TIME_UNITS_PATTERN, parseTimeUnits, REGEX_PARTS } from "../constants.js
|
|
|
2
2
|
import { ParsingComponents } from "../../../results.js";
|
|
3
3
|
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary.js";
|
|
4
4
|
const PATTERN = `(?:(?:около|примерно)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})${REGEX_PARTS.rightBoundary}`;
|
|
5
|
-
const PATTERN_WITH_PREFIX = new RegExp(`(?:в течение|в течении)\\s*${PATTERN}`, REGEX_PARTS.flags);
|
|
6
|
-
const PATTERN_WITHOUT_PREFIX = new RegExp(PATTERN, "i");
|
|
7
5
|
export default class RUTimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryChecking {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.patternWithPrefix = new RegExp(`(?:в течение|в течении)\\s*${PATTERN}`, REGEX_PARTS.flags);
|
|
9
|
+
this.patternWithoutPrefix = new RegExp(PATTERN, REGEX_PARTS.flags);
|
|
10
|
+
}
|
|
8
11
|
patternLeftBoundary() {
|
|
9
12
|
return REGEX_PARTS.leftBoundary;
|
|
10
13
|
}
|
|
11
14
|
innerPattern(context) {
|
|
12
|
-
return context.option.forwardDate ?
|
|
15
|
+
return context.option.forwardDate ? this.patternWithoutPrefix : this.patternWithPrefix;
|
|
13
16
|
}
|
|
14
17
|
innerExtract(context, match) {
|
|
15
18
|
const timeUnits = parseTimeUnits(match[1]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RUTimeUnitWithinFormatParser.js","sourceRoot":"","sources":["../../../../../src/locales/ru/parsers/RUTimeUnitWithinFormatParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sCAAsC,EAAE,MAAM,wDAAwD,CAAC;AAEhH,MAAM,OAAO,GAAG,yCAAyC,kBAAkB,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"RUTimeUnitWithinFormatParser.js","sourceRoot":"","sources":["../../../../../src/locales/ru/parsers/RUTimeUnitWithinFormatParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sCAAsC,EAAE,MAAM,wDAAwD,CAAC;AAEhH,MAAM,OAAO,GAAG,yCAAyC,kBAAkB,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;AAE3G,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,sCAAsC;IAI5F;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,iBAAiB,GAAG,IAAI,MAAM,CAAC,8BAA8B,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAChG,IAAI,CAAC,oBAAoB,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;IAED,mBAAmB;QACf,OAAO,WAAW,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,OAAuB;QAChC,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC3F,CAAC;IAED,YAAY,CAAC,OAAuB,EAAE,KAAuB;QACzD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,iBAAiB,CAAC,2BAA2B,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvF,CAAC;CACJ"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ParsingContext } from "../../../chrono.js";
|
|
2
2
|
import { ParsingComponents } from "../../../results.js";
|
|
3
|
-
import {
|
|
4
|
-
export default class RUWeekdayParser extends
|
|
5
|
-
|
|
6
|
-
patternLeftBoundary(): string;
|
|
3
|
+
import { AbstractParserWithLeftRightBoundaryChecking } from "./AbstractParserWithWordBoundaryChecking.js";
|
|
4
|
+
export default class RUWeekdayParser extends AbstractParserWithLeftRightBoundaryChecking {
|
|
5
|
+
innerPatternString(context: ParsingContext): string;
|
|
7
6
|
innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents;
|
|
8
7
|
}
|
|
@@ -1,23 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WEEKDAY_DICTIONARY } from "../constants.js";
|
|
2
2
|
import { matchAnyPattern } from "../../../utils/pattern.js";
|
|
3
|
-
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary.js";
|
|
4
3
|
import { createParsingComponentsAtWeekday } from "../../../common/calculation/weekdays.js";
|
|
5
|
-
|
|
6
|
-
`(?:в\\s*?)?` +
|
|
7
|
-
`(?:(эту|этот|прошлый|прошлую|следующий|следующую|следующего)\\s*)?` +
|
|
8
|
-
`(${matchAnyPattern(WEEKDAY_DICTIONARY)})` +
|
|
9
|
-
`(?:\\s*(?:,|\\)|)))?` +
|
|
10
|
-
`(?:\\s*на\\s*(этой|прошлой|следующей)\\s*неделе)?` +
|
|
11
|
-
`${REGEX_PARTS.rightBoundary}`, REGEX_PARTS.flags);
|
|
4
|
+
import { AbstractParserWithLeftRightBoundaryChecking } from "./AbstractParserWithWordBoundaryChecking.js";
|
|
12
5
|
const PREFIX_GROUP = 1;
|
|
13
6
|
const WEEKDAY_GROUP = 2;
|
|
14
7
|
const POSTFIX_GROUP = 3;
|
|
15
|
-
export default class RUWeekdayParser extends
|
|
16
|
-
|
|
17
|
-
return
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
export default class RUWeekdayParser extends AbstractParserWithLeftRightBoundaryChecking {
|
|
9
|
+
innerPatternString(context) {
|
|
10
|
+
return (`(?:(?:,|\\(|()\\s*)?` +
|
|
11
|
+
`(?:в\\s*?)?` +
|
|
12
|
+
`(?:(эту|этот|прошлый|прошлую|следующий|следующую|следующего)\\s*)?` +
|
|
13
|
+
`(${matchAnyPattern(WEEKDAY_DICTIONARY)})` +
|
|
14
|
+
`(?:\\s*(?:,|\\)|)))?` +
|
|
15
|
+
`(?:\\s*на\\s*(этой|прошлой|следующей)\\s*неделе)?`);
|
|
21
16
|
}
|
|
22
17
|
innerExtract(context, match) {
|
|
23
18
|
const dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RUWeekdayParser.js","sourceRoot":"","sources":["../../../../../src/locales/ru/parsers/RUWeekdayParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"RUWeekdayParser.js","sourceRoot":"","sources":["../../../../../src/locales/ru/parsers/RUWeekdayParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gCAAgC,EAAE,MAAM,sCAAsC,CAAC;AACxF,OAAO,EAAE,2CAA2C,EAAE,MAAM,0CAA0C,CAAC;AAEvG,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,2CAA2C;IACpF,kBAAkB,CAAC,OAAuB;QACtC,OAAO,CACH,sBAAsB;YACtB,aAAa;YACb,oEAAoE;YACpE,IAAI,eAAe,CAAC,kBAAkB,CAAC,GAAG;YAC1C,sBAAsB;YACtB,mDAAmD,CACtD,CAAC;IACN,CAAC;IAED,YAAY,CAAC,OAAuB,EAAE,KAAuB;QACzD,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;QACrC,IAAI,YAAY,GAAG,MAAM,IAAI,OAAO,CAAC;QACrC,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;QAClC,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAE1C,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,YAAY,IAAI,SAAS,IAAI,YAAY,IAAI,SAAS,IAAI,YAAY,IAAI,SAAS,EAAE;YACrF,QAAQ,GAAG,MAAM,CAAC;SACrB;aAAM,IACH,YAAY,IAAI,WAAW;YAC3B,YAAY,IAAI,WAAW;YAC3B,YAAY,IAAI,WAAW;YAC3B,YAAY,IAAI,YAAY,EAC9B;YACE,QAAQ,GAAG,MAAM,CAAC;SACrB;aAAM,IAAI,YAAY,IAAI,MAAM,IAAI,YAAY,IAAI,KAAK,IAAI,YAAY,IAAI,MAAM,EAAE;YAClF,QAAQ,GAAG,MAAM,CAAC;SACrB;QAED,OAAO,gCAAgC,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClF,CAAC;CACJ"}
|
package/dist/esm/results.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare class ParsingComponents implements ParsedComponents {
|
|
|
11
11
|
private knownValues;
|
|
12
12
|
private impliedValues;
|
|
13
13
|
private reference;
|
|
14
|
+
private _tags;
|
|
14
15
|
constructor(reference: ReferenceWithTimezone, knownComponents?: {
|
|
15
16
|
[c in Component]?: number;
|
|
16
17
|
});
|
|
@@ -29,6 +30,9 @@ export declare class ParsingComponents implements ParsedComponents {
|
|
|
29
30
|
toString(): string;
|
|
30
31
|
dayjs(): dayjs.Dayjs;
|
|
31
32
|
date(): Date;
|
|
33
|
+
addTag(tag: string): ParsingComponents;
|
|
34
|
+
addTags(tags: string[] | Set<string>): ParsingComponents;
|
|
35
|
+
tags(): Set<string>;
|
|
32
36
|
private dateWithoutTimezoneAdjustment;
|
|
33
37
|
static createRelativeFromReference(reference: ReferenceWithTimezone, fragments: {
|
|
34
38
|
[c in QUnitType]?: number;
|
|
@@ -44,5 +48,6 @@ export declare class ParsingResult implements ParsedResult {
|
|
|
44
48
|
constructor(reference: ReferenceWithTimezone, index: number, text: string, start?: ParsingComponents, end?: ParsingComponents);
|
|
45
49
|
clone(): ParsingResult;
|
|
46
50
|
date(): Date;
|
|
51
|
+
tags(): Set<string>;
|
|
47
52
|
toString(): string;
|
|
48
53
|
}
|
package/dist/esm/results.js
CHANGED
|
@@ -28,6 +28,7 @@ export class ReferenceWithTimezone {
|
|
|
28
28
|
}
|
|
29
29
|
export class ParsingComponents {
|
|
30
30
|
constructor(reference, knownComponents) {
|
|
31
|
+
this._tags = new Set();
|
|
31
32
|
this.reference = reference;
|
|
32
33
|
this.knownValues = {};
|
|
33
34
|
this.impliedValues = {};
|
|
@@ -115,7 +116,11 @@ export class ParsingComponents {
|
|
|
115
116
|
return true;
|
|
116
117
|
}
|
|
117
118
|
toString() {
|
|
118
|
-
return `[ParsingComponents {
|
|
119
|
+
return `[ParsingComponents {
|
|
120
|
+
tags: ${JSON.stringify(Array.from(this._tags).sort())},
|
|
121
|
+
knownValues: ${JSON.stringify(this.knownValues)},
|
|
122
|
+
impliedValues: ${JSON.stringify(this.impliedValues)}},
|
|
123
|
+
reference: ${JSON.stringify(this.reference)}]`;
|
|
119
124
|
}
|
|
120
125
|
dayjs() {
|
|
121
126
|
return dayjs(this.date());
|
|
@@ -125,6 +130,19 @@ export class ParsingComponents {
|
|
|
125
130
|
const timezoneAdjustment = this.reference.getSystemTimezoneAdjustmentMinute(date, this.get("timezoneOffset"));
|
|
126
131
|
return new Date(date.getTime() + timezoneAdjustment * 60000);
|
|
127
132
|
}
|
|
133
|
+
addTag(tag) {
|
|
134
|
+
this._tags.add(tag);
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
addTags(tags) {
|
|
138
|
+
for (const tag of tags) {
|
|
139
|
+
this._tags.add(tag);
|
|
140
|
+
}
|
|
141
|
+
return this;
|
|
142
|
+
}
|
|
143
|
+
tags() {
|
|
144
|
+
return new Set(this._tags);
|
|
145
|
+
}
|
|
128
146
|
dateWithoutTimezoneAdjustment() {
|
|
129
147
|
const date = new Date(this.get("year"), this.get("month") - 1, this.get("day"), this.get("hour"), this.get("minute"), this.get("second"), this.get("millisecond"));
|
|
130
148
|
date.setFullYear(this.get("year"));
|
|
@@ -194,8 +212,18 @@ export class ParsingResult {
|
|
|
194
212
|
date() {
|
|
195
213
|
return this.start.date();
|
|
196
214
|
}
|
|
215
|
+
tags() {
|
|
216
|
+
const combinedTags = new Set(this.start.tags());
|
|
217
|
+
if (this.end) {
|
|
218
|
+
for (const tag of this.end.tags()) {
|
|
219
|
+
combinedTags.add(tag);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return combinedTags;
|
|
223
|
+
}
|
|
197
224
|
toString() {
|
|
198
|
-
|
|
225
|
+
const tags = Array.from(this.tags()).sort();
|
|
226
|
+
return `[ParsingResult {index: ${this.index}, text: '${this.text}', tags: ${JSON.stringify(tags)} ...}]`;
|
|
199
227
|
}
|
|
200
228
|
}
|
|
201
229
|
//# sourceMappingURL=results.js.map
|
package/dist/esm/results.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/results.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,OAAO,qBAAqB;IAI9B,YAAY,KAA+B;QACvC,KAAK,GAAG,KAAK,IAAI,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,KAAK,YAAY,IAAI,EAAE;YACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACxB;aAAM;YACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACxE;IACL,CAAC;IAMD,2BAA2B;QACvB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IAC3G,CAAC;IAOD,iCAAiC,CAAC,IAAW,EAAE,sBAA+B;QAC1E,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YAG7B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;SACrB;QAED,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxD,MAAM,oBAAoB,GAAG,sBAAsB,IAAI,IAAI,CAAC,cAAc,IAAI,qBAAqB,CAAC;QACpG,OAAO,qBAAqB,GAAG,oBAAoB,CAAC;IACxD,CAAC;CACJ;AAED,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/results.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -22,11 +22,13 @@ export interface ParsedResult {
|
|
|
22
22
|
readonly start: ParsedComponents;
|
|
23
23
|
readonly end?: ParsedComponents;
|
|
24
24
|
date(): Date;
|
|
25
|
+
tags(): Set<string>;
|
|
25
26
|
}
|
|
26
27
|
export interface ParsedComponents {
|
|
27
28
|
isCertain(component: Component): boolean;
|
|
28
29
|
get(component: Component): number | null;
|
|
29
30
|
date(): Date;
|
|
31
|
+
tags(): Set<string>;
|
|
30
32
|
}
|
|
31
33
|
export declare type Component = "year" | "month" | "day" | "weekday" | "hour" | "minute" | "second" | "millisecond" | "meridiem" | "timezoneOffset";
|
|
32
34
|
export declare enum Meridiem {
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAmIA,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAChB,mCAAM,CAAA;IACN,mCAAM,CAAA;AACV,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AAED,MAAM,CAAN,IAAY,OAQX;AARD,WAAY,OAAO;IACf,yCAAU,CAAA;IACV,yCAAU,CAAA;IACV,2CAAW,CAAA;IACX,+CAAa,CAAA;IACb,6CAAY,CAAA;IACZ,yCAAU,CAAA;IACV,6CAAY,CAAA;AAChB,CAAC,EARW,OAAO,KAAP,OAAO,QAQlB;AAED,MAAM,CAAN,IAAY,KAaX;AAbD,WAAY,KAAK;IACb,uCAAW,CAAA;IACX,yCAAY,CAAA;IACZ,mCAAS,CAAA;IACT,mCAAS,CAAA;IACT,+BAAO,CAAA;IACP,iCAAQ,CAAA;IACR,iCAAQ,CAAA;IACR,qCAAU,CAAA;IACV,2CAAa,CAAA;IACb,wCAAY,CAAA;IACZ,0CAAa,CAAA;IACb,0CAAa,CAAA;AACjB,CAAC,EAbW,KAAK,KAAL,KAAK,QAahB"}
|
package/package.json
CHANGED
|
@@ -17,6 +17,7 @@ export function now(reference: ReferenceWithTimezone): ParsingComponents {
|
|
|
17
17
|
if (reference.timezoneOffset !== null) {
|
|
18
18
|
component.assign("timezoneOffset", targetDate.utcOffset());
|
|
19
19
|
}
|
|
20
|
+
component.addTag("casualReference/now");
|
|
20
21
|
return component;
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -25,6 +26,7 @@ export function today(reference: ReferenceWithTimezone): ParsingComponents {
|
|
|
25
26
|
const component = new ParsingComponents(reference, {});
|
|
26
27
|
assignSimilarDate(component, targetDate);
|
|
27
28
|
implySimilarTime(component, targetDate);
|
|
29
|
+
component.addTag("casualReference/today");
|
|
28
30
|
return component;
|
|
29
31
|
}
|
|
30
32
|
|
|
@@ -32,7 +34,7 @@ export function today(reference: ReferenceWithTimezone): ParsingComponents {
|
|
|
32
34
|
* The previous day. Imply the same time.
|
|
33
35
|
*/
|
|
34
36
|
export function yesterday(reference: ReferenceWithTimezone): ParsingComponents {
|
|
35
|
-
return theDayBefore(reference, 1);
|
|
37
|
+
return theDayBefore(reference, 1).addTag("casualReference/yesterday");
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
export function theDayBefore(reference: ReferenceWithTimezone, numDay: number): ParsingComponents {
|
|
@@ -43,7 +45,7 @@ export function theDayBefore(reference: ReferenceWithTimezone, numDay: number):
|
|
|
43
45
|
* The following day with dayjs.assignTheNextDay()
|
|
44
46
|
*/
|
|
45
47
|
export function tomorrow(reference: ReferenceWithTimezone): ParsingComponents {
|
|
46
|
-
return theDayAfter(reference, 1);
|
|
48
|
+
return theDayAfter(reference, 1).addTag("casualReference/tomorrow");
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
export function theDayAfter(reference: ReferenceWithTimezone, nDays: number): ParsingComponents {
|
|
@@ -58,9 +60,10 @@ export function theDayAfter(reference: ReferenceWithTimezone, nDays: number): Pa
|
|
|
58
60
|
export function tonight(reference: ReferenceWithTimezone, implyHour = 22): ParsingComponents {
|
|
59
61
|
const targetDate = dayjs(reference.instant);
|
|
60
62
|
const component = new ParsingComponents(reference, {});
|
|
63
|
+
assignSimilarDate(component, targetDate);
|
|
61
64
|
component.imply("hour", implyHour);
|
|
62
65
|
component.imply("meridiem", Meridiem.PM);
|
|
63
|
-
|
|
66
|
+
component.addTag("casualReference/tonight");
|
|
64
67
|
return component;
|
|
65
68
|
}
|
|
66
69
|
|
|
@@ -79,6 +82,7 @@ export function evening(reference: ReferenceWithTimezone, implyHour = 20): Parsi
|
|
|
79
82
|
const component = new ParsingComponents(reference, {});
|
|
80
83
|
component.imply("meridiem", Meridiem.PM);
|
|
81
84
|
component.imply("hour", implyHour);
|
|
85
|
+
component.addTag("casualReference/evening");
|
|
82
86
|
return component;
|
|
83
87
|
}
|
|
84
88
|
|
|
@@ -89,6 +93,8 @@ export function yesterdayEvening(reference: ReferenceWithTimezone, implyHour = 2
|
|
|
89
93
|
assignSimilarDate(component, targetDate);
|
|
90
94
|
component.imply("hour", implyHour);
|
|
91
95
|
component.imply("meridiem", Meridiem.PM);
|
|
96
|
+
component.addTag("casualReference/yesterday");
|
|
97
|
+
component.addTag("casualReference/evening");
|
|
92
98
|
return component;
|
|
93
99
|
}
|
|
94
100
|
|
|
@@ -104,6 +110,7 @@ export function midnight(reference: ReferenceWithTimezone): ParsingComponents {
|
|
|
104
110
|
component.imply("minute", 0);
|
|
105
111
|
component.imply("second", 0);
|
|
106
112
|
component.imply("millisecond", 0);
|
|
113
|
+
component.addTag("casualReference/midnight");
|
|
107
114
|
return component;
|
|
108
115
|
}
|
|
109
116
|
|
|
@@ -114,6 +121,7 @@ export function morning(reference: ReferenceWithTimezone, implyHour = 6): Parsin
|
|
|
114
121
|
component.imply("minute", 0);
|
|
115
122
|
component.imply("second", 0);
|
|
116
123
|
component.imply("millisecond", 0);
|
|
124
|
+
component.addTag("casualReference/morning");
|
|
117
125
|
return component;
|
|
118
126
|
}
|
|
119
127
|
|
|
@@ -124,6 +132,7 @@ export function afternoon(reference: ReferenceWithTimezone, implyHour = 15): Par
|
|
|
124
132
|
component.imply("minute", 0);
|
|
125
133
|
component.imply("second", 0);
|
|
126
134
|
component.imply("millisecond", 0);
|
|
135
|
+
component.addTag("casualReference/afternoon");
|
|
127
136
|
return component;
|
|
128
137
|
}
|
|
129
138
|
|
|
@@ -134,5 +143,6 @@ export function noon(reference: ReferenceWithTimezone): ParsingComponents {
|
|
|
134
143
|
component.imply("minute", 0);
|
|
135
144
|
component.imply("second", 0);
|
|
136
145
|
component.imply("millisecond", 0);
|
|
146
|
+
component.addTag("casualReference/noon");
|
|
137
147
|
return component;
|
|
138
148
|
}
|
|
@@ -3,7 +3,7 @@ import { ParsingComponents, ParsingResult } from "../../results";
|
|
|
3
3
|
import { Component } from "../../types";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* A parser that checks for word boundary and applying the inner pattern and extraction.
|
|
7
7
|
*/
|
|
8
8
|
export abstract class AbstractParserWithWordBoundaryChecking implements Parser {
|
|
9
9
|
abstract innerPattern(context: ParsingContext): RegExp;
|
|
@@ -12,21 +12,29 @@ export abstract class AbstractParserWithWordBoundaryChecking implements Parser {
|
|
|
12
12
|
match: RegExpMatchArray
|
|
13
13
|
): ParsingComponents | ParsingResult | { [c in Component]?: number } | null;
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
// Overrides this method if there is more efficient way to check for inner pattern change.
|
|
16
|
+
innerPatternHasChange(context: ParsingContext, currentInnerPattern: RegExp): boolean {
|
|
17
|
+
return this.innerPattern(context) !== currentInnerPattern;
|
|
18
|
+
}
|
|
17
19
|
|
|
18
20
|
patternLeftBoundary(): string {
|
|
19
21
|
return `(\\W|^)`;
|
|
20
22
|
}
|
|
21
23
|
|
|
24
|
+
private cachedInnerPattern?: RegExp = null;
|
|
25
|
+
private cachedPattern?: RegExp = null;
|
|
26
|
+
|
|
22
27
|
pattern(context: ParsingContext): RegExp {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
if (this.cachedInnerPattern) {
|
|
29
|
+
if (!this.innerPatternHasChange(context, this.cachedInnerPattern)) {
|
|
30
|
+
return this.cachedPattern;
|
|
31
|
+
}
|
|
26
32
|
}
|
|
27
|
-
|
|
28
|
-
this.cachedPattern = new RegExp(
|
|
29
|
-
|
|
33
|
+
this.cachedInnerPattern = this.innerPattern(context);
|
|
34
|
+
this.cachedPattern = new RegExp(
|
|
35
|
+
`${this.patternLeftBoundary()}${this.cachedInnerPattern.source}`,
|
|
36
|
+
this.cachedInnerPattern.flags
|
|
37
|
+
);
|
|
30
38
|
return this.cachedPattern;
|
|
31
39
|
}
|
|
32
40
|
|
|
@@ -15,25 +15,30 @@ export default class ENCasualDateParser extends AbstractParserWithWordBoundaryCh
|
|
|
15
15
|
innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents | ParsingResult {
|
|
16
16
|
let targetDate = dayjs(context.refDate);
|
|
17
17
|
const lowerText = match[0].toLowerCase();
|
|
18
|
-
|
|
18
|
+
let component = context.createParsingComponents();
|
|
19
19
|
|
|
20
20
|
switch (lowerText) {
|
|
21
21
|
case "now":
|
|
22
|
-
|
|
22
|
+
component = references.now(context.reference);
|
|
23
|
+
break;
|
|
23
24
|
|
|
24
25
|
case "today":
|
|
25
|
-
|
|
26
|
+
component = references.today(context.reference);
|
|
27
|
+
break;
|
|
26
28
|
|
|
27
29
|
case "yesterday":
|
|
28
|
-
|
|
30
|
+
component = references.yesterday(context.reference);
|
|
31
|
+
break;
|
|
29
32
|
|
|
30
33
|
case "tomorrow":
|
|
31
34
|
case "tmr":
|
|
32
35
|
case "tmrw":
|
|
33
|
-
|
|
36
|
+
component = references.tomorrow(context.reference);
|
|
37
|
+
break;
|
|
34
38
|
|
|
35
39
|
case "tonight":
|
|
36
|
-
|
|
40
|
+
component = references.tonight(context.reference);
|
|
41
|
+
break;
|
|
37
42
|
|
|
38
43
|
default:
|
|
39
44
|
if (lowerText.match(/last\s*night/)) {
|
|
@@ -46,7 +51,7 @@ export default class ENCasualDateParser extends AbstractParserWithWordBoundaryCh
|
|
|
46
51
|
}
|
|
47
52
|
break;
|
|
48
53
|
}
|
|
49
|
-
|
|
54
|
+
component.addTag("parser/ENCasualDateParser");
|
|
50
55
|
return component;
|
|
51
56
|
}
|
|
52
57
|
}
|
|
@@ -9,20 +9,29 @@ export default class ENCasualTimeParser extends AbstractParserWithWordBoundaryCh
|
|
|
9
9
|
return PATTERN;
|
|
10
10
|
}
|
|
11
11
|
innerExtract(context: ParsingContext, match: RegExpMatchArray) {
|
|
12
|
+
let component = null;
|
|
12
13
|
switch (match[1].toLowerCase()) {
|
|
13
14
|
case "afternoon":
|
|
14
|
-
|
|
15
|
+
component = casualReferences.afternoon(context.reference);
|
|
16
|
+
break;
|
|
15
17
|
case "evening":
|
|
16
18
|
case "night":
|
|
17
|
-
|
|
19
|
+
component = casualReferences.evening(context.reference);
|
|
20
|
+
break;
|
|
18
21
|
case "midnight":
|
|
19
|
-
|
|
22
|
+
component = casualReferences.midnight(context.reference);
|
|
23
|
+
break;
|
|
20
24
|
case "morning":
|
|
21
|
-
|
|
25
|
+
component = casualReferences.morning(context.reference);
|
|
26
|
+
break;
|
|
22
27
|
case "noon":
|
|
23
28
|
case "midday":
|
|
24
|
-
|
|
29
|
+
component = casualReferences.noon(context.reference);
|
|
30
|
+
break;
|
|
25
31
|
}
|
|
26
|
-
|
|
32
|
+
if (component) {
|
|
33
|
+
component.addTag("parser/ENCasualTimeParser");
|
|
34
|
+
}
|
|
35
|
+
return component;
|
|
27
36
|
}
|
|
28
37
|
}
|
|
@@ -22,34 +22,36 @@ export default class ENTimeExpressionParser extends AbstractTimeExpressionParser
|
|
|
22
22
|
|
|
23
23
|
extractPrimaryTimeComponents(context: ParsingContext, match: RegExpMatchArray): null | ParsingComponents {
|
|
24
24
|
const components = super.extractPrimaryTimeComponents(context, match);
|
|
25
|
-
if (components) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (hour >= 6 && hour < 12) {
|
|
29
|
-
components.assign("hour", components.get("hour") + 12);
|
|
30
|
-
components.assign("meridiem", Meridiem.PM);
|
|
31
|
-
} else if (hour < 6) {
|
|
32
|
-
components.assign("meridiem", Meridiem.AM);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
25
|
+
if (!components) {
|
|
26
|
+
return components;
|
|
27
|
+
}
|
|
35
28
|
|
|
36
|
-
|
|
29
|
+
if (match[0].endsWith("night")) {
|
|
30
|
+
const hour = components.get("hour");
|
|
31
|
+
if (hour >= 6 && hour < 12) {
|
|
32
|
+
components.assign("hour", components.get("hour") + 12);
|
|
37
33
|
components.assign("meridiem", Meridiem.PM);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
} else if (hour < 6) {
|
|
35
|
+
components.assign("meridiem", Meridiem.AM);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (match[0].endsWith("afternoon")) {
|
|
40
|
+
components.assign("meridiem", Meridiem.PM);
|
|
41
|
+
const hour = components.get("hour");
|
|
42
|
+
if (hour >= 0 && hour <= 6) {
|
|
43
|
+
components.assign("hour", components.get("hour") + 12);
|
|
42
44
|
}
|
|
45
|
+
}
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
47
|
+
if (match[0].endsWith("morning")) {
|
|
48
|
+
components.assign("meridiem", Meridiem.AM);
|
|
49
|
+
const hour = components.get("hour");
|
|
50
|
+
if (hour < 12) {
|
|
51
|
+
components.assign("hour", components.get("hour"));
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
return components;
|
|
55
|
+
return components.addTag("parser/ENTimeExpressionParser");
|
|
54
56
|
}
|
|
55
57
|
}
|
|
@@ -3,8 +3,9 @@ import { ParsingContext } from "../../../chrono";
|
|
|
3
3
|
import { ParsingComponents } from "../../../results";
|
|
4
4
|
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
|
|
5
5
|
|
|
6
|
-
const
|
|
7
|
-
`(?:(?:
|
|
6
|
+
const PATTERN_WITH_OPTIONAL_PREFIX = new RegExp(
|
|
7
|
+
`(?:(?:within|in|for)\\s*)?` +
|
|
8
|
+
`(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`,
|
|
8
9
|
"i"
|
|
9
10
|
);
|
|
10
11
|
|
|
@@ -29,7 +30,7 @@ export default class ENTimeUnitWithinFormatParser extends AbstractParserWithWord
|
|
|
29
30
|
if (this.strictMode) {
|
|
30
31
|
return PATTERN_WITH_PREFIX_STRICT;
|
|
31
32
|
}
|
|
32
|
-
return context.option.forwardDate ?
|
|
33
|
+
return context.option.forwardDate ? PATTERN_WITH_OPTIONAL_PREFIX : PATTERN_WITH_PREFIX;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
|