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.
Files changed (130) hide show
  1. package/dist/cjs/calculation/mergingCalculation.js +2 -0
  2. package/dist/cjs/calculation/mergingCalculation.js.map +1 -1
  3. package/dist/cjs/common/casualReferences.js +13 -3
  4. package/dist/cjs/common/casualReferences.js.map +1 -1
  5. package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.d.ts +2 -1
  6. package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.js +9 -5
  7. package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.js.map +1 -1
  8. package/dist/cjs/locales/en/parsers/ENCasualDateParser.js +12 -6
  9. package/dist/cjs/locales/en/parsers/ENCasualDateParser.js.map +1 -1
  10. package/dist/cjs/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
  11. package/dist/cjs/locales/en/parsers/ENCasualTimeParser.js +15 -6
  12. package/dist/cjs/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
  13. package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js +23 -22
  14. package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
  15. package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js +3 -2
  16. package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
  17. package/dist/cjs/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.d.ts +11 -0
  18. package/dist/cjs/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.js +24 -0
  19. package/dist/cjs/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.js.map +1 -0
  20. package/dist/cjs/locales/ru/parsers/RUCasualDateParser.d.ts +3 -4
  21. package/dist/cjs/locales/ru/parsers/RUCasualDateParser.js +4 -9
  22. package/dist/cjs/locales/ru/parsers/RUCasualDateParser.js.map +1 -1
  23. package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.d.ts +3 -4
  24. package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js +4 -10
  25. package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
  26. package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.d.ts +3 -4
  27. package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.js +14 -19
  28. package/dist/cjs/locales/ru/parsers/RUMonthNameLittleEndianParser.js.map +1 -1
  29. package/dist/cjs/locales/ru/parsers/RUMonthNameParser.d.ts +3 -4
  30. package/dist/cjs/locales/ru/parsers/RUMonthNameParser.js +10 -14
  31. package/dist/cjs/locales/ru/parsers/RUMonthNameParser.js.map +1 -1
  32. package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.d.ts +3 -4
  33. package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js +4 -8
  34. package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
  35. package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.d.ts +3 -4
  36. package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +4 -8
  37. package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
  38. package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.d.ts +3 -4
  39. package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +4 -8
  40. package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
  41. package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.d.ts +3 -0
  42. package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +6 -3
  43. package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -1
  44. package/dist/cjs/locales/ru/parsers/RUWeekdayParser.d.ts +3 -4
  45. package/dist/cjs/locales/ru/parsers/RUWeekdayParser.js +9 -14
  46. package/dist/cjs/locales/ru/parsers/RUWeekdayParser.js.map +1 -1
  47. package/dist/cjs/results.d.ts +5 -0
  48. package/dist/cjs/results.js +30 -2
  49. package/dist/cjs/results.js.map +1 -1
  50. package/dist/cjs/types.d.ts +2 -0
  51. package/dist/cjs/types.js.map +1 -1
  52. package/dist/esm/calculation/mergingCalculation.js +2 -0
  53. package/dist/esm/calculation/mergingCalculation.js.map +1 -1
  54. package/dist/esm/common/casualReferences.js +13 -3
  55. package/dist/esm/common/casualReferences.js.map +1 -1
  56. package/dist/esm/common/parsers/AbstractParserWithWordBoundary.d.ts +2 -1
  57. package/dist/esm/common/parsers/AbstractParserWithWordBoundary.js +9 -5
  58. package/dist/esm/common/parsers/AbstractParserWithWordBoundary.js.map +1 -1
  59. package/dist/esm/locales/en/parsers/ENCasualDateParser.js +12 -6
  60. package/dist/esm/locales/en/parsers/ENCasualDateParser.js.map +1 -1
  61. package/dist/esm/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
  62. package/dist/esm/locales/en/parsers/ENCasualTimeParser.js +15 -6
  63. package/dist/esm/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
  64. package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js +23 -22
  65. package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
  66. package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js +3 -2
  67. package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
  68. package/dist/esm/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.d.ts +11 -0
  69. package/dist/esm/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.js +19 -0
  70. package/dist/esm/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.js.map +1 -0
  71. package/dist/esm/locales/ru/parsers/RUCasualDateParser.d.ts +3 -4
  72. package/dist/esm/locales/ru/parsers/RUCasualDateParser.js +4 -9
  73. package/dist/esm/locales/ru/parsers/RUCasualDateParser.js.map +1 -1
  74. package/dist/esm/locales/ru/parsers/RUCasualTimeParser.d.ts +3 -4
  75. package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js +4 -10
  76. package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
  77. package/dist/esm/locales/ru/parsers/RUMonthNameLittleEndianParser.d.ts +3 -4
  78. package/dist/esm/locales/ru/parsers/RUMonthNameLittleEndianParser.js +15 -20
  79. package/dist/esm/locales/ru/parsers/RUMonthNameLittleEndianParser.js.map +1 -1
  80. package/dist/esm/locales/ru/parsers/RUMonthNameParser.d.ts +3 -4
  81. package/dist/esm/locales/ru/parsers/RUMonthNameParser.js +11 -15
  82. package/dist/esm/locales/ru/parsers/RUMonthNameParser.js.map +1 -1
  83. package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.d.ts +3 -4
  84. package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js +5 -9
  85. package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
  86. package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.d.ts +3 -4
  87. package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +5 -9
  88. package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
  89. package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.d.ts +3 -4
  90. package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +5 -9
  91. package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
  92. package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.d.ts +3 -0
  93. package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +6 -3
  94. package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -1
  95. package/dist/esm/locales/ru/parsers/RUWeekdayParser.d.ts +3 -4
  96. package/dist/esm/locales/ru/parsers/RUWeekdayParser.js +10 -15
  97. package/dist/esm/locales/ru/parsers/RUWeekdayParser.js.map +1 -1
  98. package/dist/esm/results.d.ts +5 -0
  99. package/dist/esm/results.js +30 -2
  100. package/dist/esm/results.js.map +1 -1
  101. package/dist/esm/types.d.ts +2 -0
  102. package/dist/esm/types.js.map +1 -1
  103. package/package.json +1 -1
  104. package/src/calculation/mergingCalculation.ts +2 -0
  105. package/src/common/casualReferences.ts +13 -3
  106. package/src/common/parsers/AbstractParserWithWordBoundary.ts +17 -9
  107. package/src/locales/en/parsers/ENCasualDateParser.ts +12 -7
  108. package/src/locales/en/parsers/ENCasualTimeParser.ts +15 -6
  109. package/src/locales/en/parsers/ENTimeExpressionParser.ts +24 -22
  110. package/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +4 -3
  111. package/src/locales/ru/parsers/AbstractParserWithWordBoundaryChecking.ts +25 -0
  112. package/src/locales/ru/parsers/RUCasualDateParser.ts +4 -14
  113. package/src/locales/ru/parsers/RUCasualTimeParser.ts +4 -14
  114. package/src/locales/ru/parsers/RUMonthNameLittleEndianParser.ts +16 -26
  115. package/src/locales/ru/parsers/RUMonthNameParser.ts +13 -20
  116. package/src/locales/ru/parsers/RURelativeDateFormatParser.ts +6 -14
  117. package/src/locales/ru/parsers/RUTimeUnitAgoFormatParser.ts +5 -11
  118. package/src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts +4 -13
  119. package/src/locales/ru/parsers/RUTimeUnitWithinFormatParser.ts +10 -4
  120. package/src/locales/ru/parsers/RUWeekdayParser.ts +12 -20
  121. package/src/results.ts +34 -4
  122. package/src/types.ts +11 -1
  123. package/test/en/en.test.ts +3 -3
  124. package/test/en/en_time_units_within.test.ts +22 -1
  125. package/test/result.test.ts +65 -3
  126. package/test/ru/ru_relative.test.ts +44 -11
  127. package/test/ru/ru_time_units_casual_relative.test.ts +96 -30
  128. package/test/system.test.ts +37 -0
  129. package/test/uk/uk_relative.test.ts +44 -11
  130. 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 { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary.js";
4
- export default class RUTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundaryChecking {
5
- patternLeftBoundary(): string;
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, REGEX_PARTS } from "../constants.js";
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
- const PATTERN = new RegExp(`(эти|последние|прошлые|следующие|после|спустя|через|\\+|-)\\s*(${TIME_UNITS_PATTERN})${REGEX_PARTS.rightBoundary}`, REGEX_PARTS.flags);
6
- export default class RUTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundaryChecking {
7
- patternLeftBoundary() {
8
- return REGEX_PARTS.leftBoundary;
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,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sCAAsC,EAAE,MAAM,wDAAwD,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,OAAO,GAAG,IAAI,MAAM,CACtB,kEAAkE,kBAAkB,IAAI,WAAW,CAAC,aAAa,EAAE,EACnH,WAAW,CAAC,KAAK,CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,oCAAqC,SAAQ,sCAAsC;IACpG,mBAAmB;QACf,OAAO,WAAW,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,YAAY;QACR,OAAO,OAAO,CAAC;IACnB,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"}
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 ? PATTERN_WITHOUT_PREFIX : PATTERN_WITH_PREFIX;
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;AAC3G,MAAM,mBAAmB,GAAG,IAAI,MAAM,CAAC,8BAA8B,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;AAEnG,MAAM,sBAAsB,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAExD,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,sCAAsC;IAC5F,mBAAmB;QACf,OAAO,WAAW,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,OAAuB;QAChC,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACrF,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
+ {"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 { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary.js";
4
- export default class RUWeekdayParser extends AbstractParserWithWordBoundaryChecking {
5
- innerPattern(): RegExp;
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 { REGEX_PARTS, WEEKDAY_DICTIONARY } from "../constants.js";
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
- const PATTERN = new RegExp(`(?:(?:,|\\(|()\\s*)?` +
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 AbstractParserWithWordBoundaryChecking {
16
- innerPattern() {
17
- return PATTERN;
18
- }
19
- patternLeftBoundary() {
20
- return REGEX_PARTS.leftBoundary;
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,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,sCAAsC,EAAE,MAAM,wDAAwD,CAAC;AAChH,OAAO,EAAE,gCAAgC,EAAE,MAAM,sCAAsC,CAAC;AAExF,MAAM,OAAO,GAAG,IAAI,MAAM,CACtB,sBAAsB;IAClB,aAAa;IACb,oEAAoE;IACpE,IAAI,eAAe,CAAC,kBAAkB,CAAC,GAAG;IAC1C,sBAAsB;IACtB,mDAAmD;IACnD,GAAG,WAAW,CAAC,aAAa,EAAE,EAClC,WAAW,CAAC,KAAK,CACpB,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,sCAAsC;IAC/E,YAAY;QACR,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,mBAAmB;QACf,OAAO,WAAW,CAAC,YAAY,CAAC;IACpC,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"}
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"}
@@ -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
  }
@@ -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 {knownValues: ${JSON.stringify(this.knownValues)}, impliedValues: ${JSON.stringify(this.impliedValues)}}, reference: ${JSON.stringify(this.reference)}]`;
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
- return `[ParsingResult {index: ${this.index}, text: '${this.text}', ...}]`;
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
@@ -1 +1 @@
1
- {"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/results.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/results.ts"],"names":[],"mappings":"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"}
@@ -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 {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAyHA,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"}
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
@@ -15,7 +15,7 @@
15
15
  "preset": "ts-jest"
16
16
  },
17
17
  "license": "MIT",
18
- "version": "2.6.6",
18
+ "version": "2.7.1",
19
19
  "directories": {
20
20
  "source": "./src",
21
21
  "test": "./test"
@@ -77,5 +77,7 @@ export function mergeDateTimeComponent(
77
77
  }
78
78
  }
79
79
 
80
+ dateTimeComponent.addTags(dateComponent.tags());
81
+ dateTimeComponent.addTags(timeComponent.tags());
80
82
  return dateTimeComponent;
81
83
  }
@@ -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
- assignSimilarDate(component, targetDate);
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
- private cachedInnerPattern?: RegExp = null;
16
- private cachedPattern?: RegExp = null;
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
- const innerPattern = this.innerPattern(context);
24
- if (innerPattern == this.cachedInnerPattern) {
25
- return this.cachedPattern;
28
+ if (this.cachedInnerPattern) {
29
+ if (!this.innerPatternHasChange(context, this.cachedInnerPattern)) {
30
+ return this.cachedPattern;
31
+ }
26
32
  }
27
-
28
- this.cachedPattern = new RegExp(`${this.patternLeftBoundary()}${innerPattern.source}`, innerPattern.flags);
29
- this.cachedInnerPattern = innerPattern;
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
- const component = context.createParsingComponents();
18
+ let component = context.createParsingComponents();
19
19
 
20
20
  switch (lowerText) {
21
21
  case "now":
22
- return references.now(context.reference);
22
+ component = references.now(context.reference);
23
+ break;
23
24
 
24
25
  case "today":
25
- return references.today(context.reference);
26
+ component = references.today(context.reference);
27
+ break;
26
28
 
27
29
  case "yesterday":
28
- return references.yesterday(context.reference);
30
+ component = references.yesterday(context.reference);
31
+ break;
29
32
 
30
33
  case "tomorrow":
31
34
  case "tmr":
32
35
  case "tmrw":
33
- return references.tomorrow(context.reference);
36
+ component = references.tomorrow(context.reference);
37
+ break;
34
38
 
35
39
  case "tonight":
36
- return references.tonight(context.reference);
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
- return casualReferences.afternoon(context.reference);
15
+ component = casualReferences.afternoon(context.reference);
16
+ break;
15
17
  case "evening":
16
18
  case "night":
17
- return casualReferences.evening(context.reference);
19
+ component = casualReferences.evening(context.reference);
20
+ break;
18
21
  case "midnight":
19
- return casualReferences.midnight(context.reference);
22
+ component = casualReferences.midnight(context.reference);
23
+ break;
20
24
  case "morning":
21
- return casualReferences.morning(context.reference);
25
+ component = casualReferences.morning(context.reference);
26
+ break;
22
27
  case "noon":
23
28
  case "midday":
24
- return casualReferences.noon(context.reference);
29
+ component = casualReferences.noon(context.reference);
30
+ break;
25
31
  }
26
- return null;
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
- if (match[0].endsWith("night")) {
27
- const hour = components.get("hour");
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
- if (match[0].endsWith("afternoon")) {
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
- const hour = components.get("hour");
39
- if (hour >= 0 && hour <= 6) {
40
- components.assign("hour", components.get("hour") + 12);
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
- if (match[0].endsWith("morning")) {
45
- components.assign("meridiem", Meridiem.AM);
46
- const hour = components.get("hour");
47
- if (hour < 12) {
48
- components.assign("hour", components.get("hour"));
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 PATTERN_WITHOUT_PREFIX = new RegExp(
7
- `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`,
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 ? PATTERN_WITHOUT_PREFIX : PATTERN_WITH_PREFIX;
33
+ return context.option.forwardDate ? PATTERN_WITH_OPTIONAL_PREFIX : PATTERN_WITH_PREFIX;
33
34
  }
34
35
 
35
36
  innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {