chrono-node 2.7.7 → 2.7.9

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 (201) hide show
  1. package/dist/cjs/common/parsers/SlashDateFormatParser.js +1 -1
  2. package/dist/cjs/common/parsers/SlashDateFormatParser.js.map +1 -1
  3. package/dist/cjs/locales/en/configuration.js +2 -0
  4. package/dist/cjs/locales/en/configuration.js.map +1 -1
  5. package/dist/cjs/locales/en/parsers/ENCasualDateParser.js +4 -1
  6. package/dist/cjs/locales/en/parsers/ENCasualDateParser.js.map +1 -1
  7. package/dist/cjs/locales/en/parsers/ENMonthNameParser.js +1 -1
  8. package/dist/cjs/locales/en/parsers/ENMonthNameParser.js.map +1 -1
  9. package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.d.ts +2 -1
  10. package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js +7 -0
  11. package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
  12. package/dist/cjs/locales/en/parsers/ENWeekdayParser.d.ts +1 -1
  13. package/dist/cjs/locales/en/parsers/ENWeekdayParser.js +24 -3
  14. package/dist/cjs/locales/en/parsers/ENWeekdayParser.js.map +1 -1
  15. package/dist/cjs/locales/en/refiners/ENUnlikelyFormatFilter.d.ts +6 -0
  16. package/dist/cjs/locales/en/refiners/ENUnlikelyFormatFilter.js +35 -0
  17. package/dist/cjs/locales/en/refiners/ENUnlikelyFormatFilter.js.map +1 -0
  18. package/dist/cjs/locales/it/constants.d.ts +28 -0
  19. package/dist/cjs/locales/it/constants.js +165 -0
  20. package/dist/cjs/locales/it/constants.js.map +1 -0
  21. package/dist/cjs/locales/it/index.d.ts +9 -0
  22. package/dist/cjs/locales/it/index.js +66 -0
  23. package/dist/cjs/locales/it/index.js.map +1 -0
  24. package/dist/cjs/locales/it/parsers/ITCasualDateParser.d.ts +7 -0
  25. package/dist/cjs/locales/it/parsers/ITCasualDateParser.js +65 -0
  26. package/dist/cjs/locales/it/parsers/ITCasualDateParser.js.map +1 -0
  27. package/dist/cjs/locales/it/parsers/ITCasualTimeParser.d.ts +6 -0
  28. package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js +47 -0
  29. package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js.map +1 -0
  30. package/dist/cjs/locales/it/parsers/ITCasualYearMonthDayParser.d.ts +10 -0
  31. package/dist/cjs/locales/it/parsers/ITCasualYearMonthDayParser.js +35 -0
  32. package/dist/cjs/locales/it/parsers/ITCasualYearMonthDayParser.js.map +1 -0
  33. package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.d.ts +7 -0
  34. package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.js +57 -0
  35. package/dist/cjs/locales/it/parsers/ITMonthNameLittleEndianParser.js.map +1 -0
  36. package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.d.ts +6 -0
  37. package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.js +59 -0
  38. package/dist/cjs/locales/it/parsers/ITMonthNameMiddleEndianParser.js.map +1 -0
  39. package/dist/cjs/locales/it/parsers/ITMonthNameParser.d.ts +6 -0
  40. package/dist/cjs/locales/it/parsers/ITMonthNameParser.js +43 -0
  41. package/dist/cjs/locales/it/parsers/ITMonthNameParser.js.map +1 -0
  42. package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.d.ts +7 -0
  43. package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js +57 -0
  44. package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -0
  45. package/dist/cjs/locales/it/parsers/ITSlashMonthFormatParser.d.ts +7 -0
  46. package/dist/cjs/locales/it/parsers/ITSlashMonthFormatParser.js +18 -0
  47. package/dist/cjs/locales/it/parsers/ITSlashMonthFormatParser.js.map +1 -0
  48. package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.d.ts +10 -0
  49. package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.js +50 -0
  50. package/dist/cjs/locales/it/parsers/ITTimeExpressionParser.js.map +1 -0
  51. package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.d.ts +9 -0
  52. package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js +24 -0
  53. package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -0
  54. package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.d.ts +7 -0
  55. package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +26 -0
  56. package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -0
  57. package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.d.ts +9 -0
  58. package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js +23 -0
  59. package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -0
  60. package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.d.ts +7 -0
  61. package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js +19 -0
  62. package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js.map +1 -0
  63. package/dist/cjs/locales/it/parsers/ITWeekdayParser.d.ts +7 -0
  64. package/dist/cjs/locales/it/parsers/ITWeekdayParser.js +43 -0
  65. package/dist/cjs/locales/it/parsers/ITWeekdayParser.js.map +1 -0
  66. package/dist/cjs/locales/it/refiners/ITMergeDateRangeRefiner.d.ts +4 -0
  67. package/dist/cjs/locales/it/refiners/ITMergeDateRangeRefiner.js +13 -0
  68. package/dist/cjs/locales/it/refiners/ITMergeDateRangeRefiner.js.map +1 -0
  69. package/dist/cjs/locales/it/refiners/ITMergeDateTimeRefiner.d.ts +4 -0
  70. package/dist/cjs/locales/it/refiners/ITMergeDateTimeRefiner.js +13 -0
  71. package/dist/cjs/locales/it/refiners/ITMergeDateTimeRefiner.js.map +1 -0
  72. package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.d.ts +7 -0
  73. package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js +36 -0
  74. package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -0
  75. package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js +4 -4
  76. package/dist/cjs/locales/ja/refiners/JPMergeDateRangeRefiner.js +1 -1
  77. package/dist/cjs/locales/ja/refiners/JPMergeDateRangeRefiner.js.map +1 -1
  78. package/dist/cjs/results.d.ts +2 -0
  79. package/dist/cjs/results.js +16 -0
  80. package/dist/cjs/results.js.map +1 -1
  81. package/dist/esm/common/parsers/SlashDateFormatParser.js +1 -1
  82. package/dist/esm/common/parsers/SlashDateFormatParser.js.map +1 -1
  83. package/dist/esm/locales/en/configuration.js +2 -0
  84. package/dist/esm/locales/en/configuration.js.map +1 -1
  85. package/dist/esm/locales/en/parsers/ENCasualDateParser.js +4 -1
  86. package/dist/esm/locales/en/parsers/ENCasualDateParser.js.map +1 -1
  87. package/dist/esm/locales/en/parsers/ENMonthNameParser.js +1 -1
  88. package/dist/esm/locales/en/parsers/ENMonthNameParser.js.map +1 -1
  89. package/dist/esm/locales/en/parsers/ENTimeExpressionParser.d.ts +2 -1
  90. package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js +7 -0
  91. package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js.map +1 -1
  92. package/dist/esm/locales/en/parsers/ENWeekdayParser.d.ts +1 -1
  93. package/dist/esm/locales/en/parsers/ENWeekdayParser.js +24 -3
  94. package/dist/esm/locales/en/parsers/ENWeekdayParser.js.map +1 -1
  95. package/dist/esm/locales/en/refiners/ENUnlikelyFormatFilter.d.ts +6 -0
  96. package/dist/esm/locales/en/refiners/ENUnlikelyFormatFilter.js +32 -0
  97. package/dist/esm/locales/en/refiners/ENUnlikelyFormatFilter.js.map +1 -0
  98. package/dist/esm/locales/it/constants.d.ts +28 -0
  99. package/dist/esm/locales/it/constants.js +200 -0
  100. package/dist/esm/locales/it/constants.js.map +1 -0
  101. package/dist/esm/locales/it/index.d.ts +9 -0
  102. package/dist/esm/locales/it/index.js +56 -0
  103. package/dist/esm/locales/it/index.js.map +1 -0
  104. package/dist/esm/locales/it/parsers/ITCasualDateParser.d.ts +7 -0
  105. package/dist/esm/locales/it/parsers/ITCasualDateParser.js +40 -0
  106. package/dist/esm/locales/it/parsers/ITCasualDateParser.js.map +1 -0
  107. package/dist/esm/locales/it/parsers/ITCasualTimeParser.d.ts +6 -0
  108. package/dist/esm/locales/it/parsers/ITCasualTimeParser.js +41 -0
  109. package/dist/esm/locales/it/parsers/ITCasualTimeParser.js.map +1 -0
  110. package/dist/esm/locales/it/parsers/ITCasualYearMonthDayParser.d.ts +10 -0
  111. package/dist/esm/locales/it/parsers/ITCasualYearMonthDayParser.js +32 -0
  112. package/dist/esm/locales/it/parsers/ITCasualYearMonthDayParser.js.map +1 -0
  113. package/dist/esm/locales/it/parsers/ITMonthNameLittleEndianParser.d.ts +7 -0
  114. package/dist/esm/locales/it/parsers/ITMonthNameLittleEndianParser.js +54 -0
  115. package/dist/esm/locales/it/parsers/ITMonthNameLittleEndianParser.js.map +1 -0
  116. package/dist/esm/locales/it/parsers/ITMonthNameMiddleEndianParser.d.ts +6 -0
  117. package/dist/esm/locales/it/parsers/ITMonthNameMiddleEndianParser.js +56 -0
  118. package/dist/esm/locales/it/parsers/ITMonthNameMiddleEndianParser.js.map +1 -0
  119. package/dist/esm/locales/it/parsers/ITMonthNameParser.d.ts +6 -0
  120. package/dist/esm/locales/it/parsers/ITMonthNameParser.js +40 -0
  121. package/dist/esm/locales/it/parsers/ITMonthNameParser.js.map +1 -0
  122. package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.d.ts +7 -0
  123. package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js +51 -0
  124. package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -0
  125. package/dist/esm/locales/it/parsers/ITSlashMonthFormatParser.d.ts +7 -0
  126. package/dist/esm/locales/it/parsers/ITSlashMonthFormatParser.js +15 -0
  127. package/dist/esm/locales/it/parsers/ITSlashMonthFormatParser.js.map +1 -0
  128. package/dist/esm/locales/it/parsers/ITTimeExpressionParser.d.ts +10 -0
  129. package/dist/esm/locales/it/parsers/ITTimeExpressionParser.js +47 -0
  130. package/dist/esm/locales/it/parsers/ITTimeExpressionParser.js.map +1 -0
  131. package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.d.ts +9 -0
  132. package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js +21 -0
  133. package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -0
  134. package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.d.ts +7 -0
  135. package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +23 -0
  136. package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -0
  137. package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.d.ts +9 -0
  138. package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js +20 -0
  139. package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -0
  140. package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.d.ts +7 -0
  141. package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.js +16 -0
  142. package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.js.map +1 -0
  143. package/dist/esm/locales/it/parsers/ITWeekdayParser.d.ts +7 -0
  144. package/dist/esm/locales/it/parsers/ITWeekdayParser.js +40 -0
  145. package/dist/esm/locales/it/parsers/ITWeekdayParser.js.map +1 -0
  146. package/dist/esm/locales/it/refiners/ITMergeDateRangeRefiner.d.ts +4 -0
  147. package/dist/esm/locales/it/refiners/ITMergeDateRangeRefiner.js +7 -0
  148. package/dist/esm/locales/it/refiners/ITMergeDateRangeRefiner.js.map +1 -0
  149. package/dist/esm/locales/it/refiners/ITMergeDateTimeRefiner.d.ts +4 -0
  150. package/dist/esm/locales/it/refiners/ITMergeDateTimeRefiner.js +7 -0
  151. package/dist/esm/locales/it/refiners/ITMergeDateTimeRefiner.js.map +1 -0
  152. package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.d.ts +7 -0
  153. package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.js +33 -0
  154. package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -0
  155. package/dist/esm/locales/ja/parsers/JPCasualDateParser.js +4 -4
  156. package/dist/esm/locales/ja/refiners/JPMergeDateRangeRefiner.js +1 -1
  157. package/dist/esm/locales/ja/refiners/JPMergeDateRangeRefiner.js.map +1 -1
  158. package/dist/esm/results.d.ts +2 -0
  159. package/dist/esm/results.js +16 -0
  160. package/dist/esm/results.js.map +1 -1
  161. package/package.json +1 -1
  162. package/src/common/parsers/SlashDateFormatParser.ts +1 -1
  163. package/src/locales/en/configuration.ts +2 -0
  164. package/src/locales/en/parsers/ENCasualDateParser.ts +5 -1
  165. package/src/locales/en/parsers/ENMonthNameParser.ts +1 -1
  166. package/src/locales/en/parsers/ENTimeExpressionParser.ts +13 -1
  167. package/src/locales/en/parsers/ENWeekdayParser.ts +28 -4
  168. package/src/locales/en/refiners/ENUnlikelyFormatFilter.ts +44 -0
  169. package/src/locales/it/constants.ts +230 -0
  170. package/src/locales/it/index.ts +99 -0
  171. package/src/locales/it/parsers/ITCasualDateParser.ts +53 -0
  172. package/src/locales/it/parsers/ITCasualTimeParser.ts +50 -0
  173. package/src/locales/it/parsers/ITCasualYearMonthDayParser.ts +49 -0
  174. package/src/locales/it/parsers/ITMonthNameLittleEndianParser.ts +69 -0
  175. package/src/locales/it/parsers/ITMonthNameMiddleEndianParser.ts +78 -0
  176. package/src/locales/it/parsers/ITMonthNameParser.ts +62 -0
  177. package/src/locales/it/parsers/ITRelativeDateFormatParser.ts +71 -0
  178. package/src/locales/it/parsers/ITSlashMonthFormatParser.ts +26 -0
  179. package/src/locales/it/parsers/ITTimeExpressionParser.ts +55 -0
  180. package/src/locales/it/parsers/ITTimeUnitAgoFormatParser.ts +25 -0
  181. package/src/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.ts +30 -0
  182. package/src/locales/it/parsers/ITTimeUnitLaterFormatParser.ts +27 -0
  183. package/src/locales/it/parsers/ITTimeUnitWithinFormatParser.ts +26 -0
  184. package/src/locales/it/parsers/ITWeekdayParser.ts +47 -0
  185. package/src/locales/it/refiners/ITMergeDateRangeRefiner.ts +17 -0
  186. package/src/locales/it/refiners/ITMergeDateTimeRefiner.ts +13 -0
  187. package/src/locales/it/refiners/ITMergeRelativeDateRefiner.ts +58 -0
  188. package/src/locales/ja/parsers/JPCasualDateParser.ts +4 -4
  189. package/src/locales/ja/refiners/JPMergeDateRangeRefiner.ts +1 -1
  190. package/src/results.ts +18 -0
  191. package/test/en/en_casual.test.ts +4 -0
  192. package/test/en/en_month.test.ts +22 -1
  193. package/test/en/en_slash.test.ts +4 -0
  194. package/test/en/en_time_exp.test.ts +9 -0
  195. package/test/en/en_time_units_ago.test.ts +4 -0
  196. package/test/en/en_time_units_casual_relative.test.ts +5 -0
  197. package/test/en/en_time_units_later.test.ts +1 -0
  198. package/test/en/en_time_units_within.test.ts +2 -0
  199. package/test/en/en_weekday.test.ts +43 -0
  200. package/test/ja/ja_casual.test.ts +8 -0
  201. package/test/ja/ja_standard.test.ts +19 -0
@@ -3,14 +3,14 @@ import dayjs from "dayjs";
3
3
  import { Meridiem } from "../../../types";
4
4
  import * as references from "../../../common/casualReferences";
5
5
 
6
- const PATTERN = /今日|きょう|当日|とうじつ|昨日|きのう|明日|あした|今夜|こんや|今夕|こんゆう|今晩|こんばん|今朝|けさ/i;
6
+ const PATTERN = /今日|きょう|本日|ほんじつ|昨日|きのう|明日|あした|今夜|こんや|今夕|こんゆう|今晩|こんばん|今朝|けさ/i;
7
7
 
8
8
  function normalizeTextToKanji(text: string) {
9
9
  switch (text) {
10
10
  case "きょう":
11
11
  return "今日";
12
- case "とうじつ":
13
- return "当日";
12
+ case "ほんじつ":
13
+ return "本日";
14
14
  case "きのう":
15
15
  return "昨日";
16
16
  case "あした":
@@ -46,8 +46,8 @@ export default class JPCasualDateParser implements Parser {
46
46
  case "明日":
47
47
  return references.tomorrow(context.reference);
48
48
 
49
+ case "本日":
49
50
  case "今日":
50
- case "当日":
51
51
  return references.today(context.reference);
52
52
  }
53
53
 
@@ -8,6 +8,6 @@ import AbstractMergeDateRangeRefiner from "../../../common/refiners/AbstractMerg
8
8
  */
9
9
  export default class JPMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner {
10
10
  patternBetween(): RegExp {
11
- return /^\s*(から|ー|-)\s*$/i;
11
+ return /^\s*(から|ー|-|~|~)\s*$/i;
12
12
  }
13
13
  }
package/src/results.ts CHANGED
@@ -216,7 +216,9 @@ export class ParsingComponents implements ParsedComponents {
216
216
  }
217
217
 
218
218
  const components = new ParsingComponents(reference);
219
+ components.addTag("result/relativeDate");
219
220
  if (fragments["hour"] || fragments["minute"] || fragments["second"]) {
221
+ components.addTag("result/relativeDateAndTime");
220
222
  assignSimilarTime(components, date);
221
223
  assignSimilarDate(components, date);
222
224
  if (reference.timezoneOffset !== null) {
@@ -293,6 +295,22 @@ export class ParsingResult implements ParsedResult {
293
295
  return this.start.date();
294
296
  }
295
297
 
298
+ addTag(tag: string): ParsingResult {
299
+ this.start.addTag(tag);
300
+ if (this.end) {
301
+ this.end.addTag(tag);
302
+ }
303
+ return this;
304
+ }
305
+
306
+ addTags(tags: string[] | Set<string>): ParsingResult {
307
+ this.start.addTags(tags);
308
+ if (this.end) {
309
+ this.end.addTags(tags);
310
+ }
311
+ return this;
312
+ }
313
+
296
314
  tags(): Set<string> {
297
315
  const combinedTags: Set<string> = new Set(this.start.tags());
298
316
  if (this.end) {
@@ -412,6 +412,10 @@ test("Test - Random negative text", () => {
412
412
 
413
413
  testUnexpectedResult(chrono, "do I have the money");
414
414
 
415
+ testUnexpectedResult(chrono, "I may by here. May the force be with you. Theresa may become PM soon.");
416
+
417
+ testUnexpectedResult(chrono, "XXX is set to be released in the second half of 2025");
418
+
415
419
  testUnexpectedResult(chrono.casual, "do I have the money");
416
420
 
417
421
  testUnexpectedResult(chrono.en.GB, "do I have the money");
@@ -1,5 +1,5 @@
1
1
  import * as chrono from "../../src";
2
- import { testSingleCase } from "../test_util";
2
+ import { testSingleCase, testUnexpectedResult } from "../test_util";
3
3
 
4
4
  test("Test - Month-Year expression", function () {
5
5
  testSingleCase(chrono, "September 2012", (result) => {
@@ -69,6 +69,14 @@ test("Test - Month-Year expression", function () {
69
69
  expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
70
70
  });
71
71
 
72
+ testSingleCase(chrono, "in June of 2022", (result) => {
73
+ expect(result.text).toContain("June of 2022");
74
+
75
+ expect(result.start).not.toBeNull();
76
+ expect(result.start.get("year")).toBe(2022);
77
+ expect(result.start.get("month")).toBe(6);
78
+ });
79
+
72
80
  testSingleCase(chrono, "Statement of comprehensive income for the year ended Dec. 2021", (result) => {
73
81
  expect(result.text).toBe("Dec. 2021");
74
82
 
@@ -272,3 +280,16 @@ test("Test - Month should not have timezone", () => {
272
280
  }
273
281
  );
274
282
  });
283
+
284
+ test("Test - Month only in different context", () => {
285
+ testSingleCase(chrono.casual, "May", (result) => {
286
+ expect(result.text).toContain("May");
287
+ });
288
+
289
+ testSingleCase(chrono.casual, "in May", (result) => {
290
+ expect(result.text).toContain("May");
291
+ });
292
+
293
+ testUnexpectedResult(chrono.casual, "The mountain may not move");
294
+ testUnexpectedResult(chrono.casual, "May not be correct");
295
+ });
@@ -17,6 +17,7 @@ test("Test - Single Expression (MM/dd/yyyy)", function () {
17
17
 
18
18
  expect(result.index).toBe(0);
19
19
  expect(result.text).toBe("8/10/2012");
20
+ expect(result.tags()).toContain("parser/SlashDateFormatParser");
20
21
 
21
22
  expect(result.start.isCertain("day")).toBe(true);
22
23
  expect(result.start.isCertain("month")).toBe(true);
@@ -161,11 +162,13 @@ test("Test - Range Expression", function () {
161
162
  testSingleCase(chrono.en, "8/10/2012 - 8/15/2012", new Date(2012, 7, 10), (result) => {
162
163
  expect(result.index).toBe(0);
163
164
  expect(result.text).toBe("8/10/2012 - 8/15/2012");
165
+ expect(result.tags()).toContain("parser/SlashDateFormatParser");
164
166
 
165
167
  expect(result.start).not.toBeNull();
166
168
  expect(result.start.get("year")).toBe(2012);
167
169
  expect(result.start.get("month")).toBe(8);
168
170
  expect(result.start.get("day")).toBe(10);
171
+ expect(result.start.tags()).toContain("parser/SlashDateFormatParser");
169
172
 
170
173
  expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
171
174
 
@@ -173,6 +176,7 @@ test("Test - Range Expression", function () {
173
176
  expect(result.end.get("year")).toBe(2012);
174
177
  expect(result.end.get("month")).toBe(8);
175
178
  expect(result.end.get("day")).toBe(15);
179
+ expect(result.end.tags()).toContain("parser/SlashDateFormatParser");
176
180
 
177
181
  expect(result.end).toBeDate(new Date(2012, 8 - 1, 15, 12));
178
182
  });
@@ -21,6 +21,9 @@ test("Test - Time expression", function () {
21
21
  expect(result.start.get("minute")).toBe(32);
22
22
  expect(result.start.get("second")).toBe(13);
23
23
  expect(result.start.get("meridiem")).toBe(Meridiem.PM);
24
+
25
+ expect(result.tags()).toContain("parser/ENTimeExpressionParser");
26
+ expect(result.start.tags()).toContain("parser/ENTimeExpressionParser");
24
27
  });
25
28
  });
26
29
 
@@ -35,6 +38,9 @@ test("Test - Time expression after date", function () {
35
38
  expect(result.start.get("hour")).toBe(14);
36
39
  expect(result.start.get("minute")).toBe(15);
37
40
  expect(result.start.get("meridiem")).toBe(Meridiem.PM);
41
+
42
+ expect(result.tags()).toContain("parser/ENTimeExpressionParser");
43
+ expect(result.start.tags()).toContain("parser/ENTimeExpressionParser");
38
44
  });
39
45
 
40
46
  testSingleCase(chrono, "05/31/2024.14:15", new Date(2016, 10 - 1, 1, 8), (result, text) => {
@@ -115,16 +121,19 @@ test("Test - Time expression before date", () => {
115
121
  test("Test - Time range expression", function () {
116
122
  testSingleCase(chrono, "10:00:00 - 21:45:00", new Date(2016, 10 - 1, 1, 8), (result, text) => {
117
123
  expect(result.text).toBe(text);
124
+ expect(result.tags()).toContain("parser/ENTimeExpressionParser");
118
125
 
119
126
  expect(result.start.get("hour")).toBe(10);
120
127
  expect(result.start.get("minute")).toBe(0);
121
128
  expect(result.start.get("second")).toBe(0);
122
129
  expect(result.start.get("meridiem")).toBe(Meridiem.AM);
130
+ expect(result.start.tags()).toContain("parser/ENTimeExpressionParser");
123
131
 
124
132
  expect(result.end.get("hour")).toBe(21);
125
133
  expect(result.end.get("minute")).toBe(45);
126
134
  expect(result.end.get("second")).toBe(0);
127
135
  expect(result.end.get("meridiem")).toBe(Meridiem.PM);
136
+ expect(result.end.tags()).toContain("parser/ENTimeExpressionParser");
128
137
  });
129
138
 
130
139
  testSingleCase(chrono, "10:00:00 until 21:45:00", new Date(2016, 10 - 1, 1, 11), (result, text) => {
@@ -11,6 +11,7 @@ test("Test - Single Expression", function () {
11
11
 
12
12
  expect(result.index).toBe(0);
13
13
  expect(result.text).toBe("5 days ago");
14
+ expect(result.tags()).toContain("result/relativeDate");
14
15
 
15
16
  expect(result.start).toBeDate(new Date(2012, 8 - 1, 5));
16
17
  });
@@ -30,6 +31,9 @@ test("Test - Single Expression", function () {
30
31
  testSingleCase(chrono, "15 minute ago", new Date(2012, 7, 10, 12, 14), (result) => {
31
32
  expect(result.index).toBe(0);
32
33
  expect(result.text).toBe("15 minute ago");
34
+ expect(result.tags()).toContain("result/relativeDate");
35
+ expect(result.tags()).toContain("result/relativeDateAndTime");
36
+
33
37
  expect(result.start.get("hour")).toBe(11);
34
38
  expect(result.start.get("minute")).toBe(59);
35
39
  expect(result.start.get("meridiem")).toBe(Meridiem.AM);
@@ -5,6 +5,8 @@ import ENTimeUnitCasualRelativeFormatParser from "../../src/locales/en/parsers/E
5
5
  test("Test - Positive time units", () => {
6
6
  testSingleCase(chrono, "next 2 weeks", new Date(2016, 10 - 1, 1, 12), (result, text) => {
7
7
  expect(result.text).toBe(text);
8
+ expect(result.tags()).toContain("result/relativeDate");
9
+
8
10
  expect(result.start.get("year")).toBe(2016);
9
11
  expect(result.start.get("month")).toBe(10);
10
12
  expect(result.start.get("day")).toBe(15);
@@ -44,6 +46,9 @@ test("Test - Positive time units", () => {
44
46
 
45
47
  testSingleCase(chrono, "after an hour", new Date(2016, 10 - 1, 1, 15), (result, text) => {
46
48
  expect(result.text).toBe(text);
49
+ expect(result.tags()).toContain("result/relativeDate");
50
+ expect(result.tags()).toContain("result/relativeDateAndTime");
51
+
47
52
  expect(result.start.get("year")).toBe(2016);
48
53
  expect(result.start.get("month")).toBe(10);
49
54
  expect(result.start.get("day")).toBe(1);
@@ -11,6 +11,7 @@ test("Test - Later Expression", function () {
11
11
 
12
12
  expect(result.index).toBe(0);
13
13
  expect(result.text).toBe("2 days later");
14
+ expect(result.tags()).toContain("result/relativeDate");
14
15
 
15
16
  expect(result.start.isCertain("day")).toBe(true);
16
17
  expect(result.start.isCertain("month")).toBe(true);
@@ -6,6 +6,7 @@ test("Test - The normal within expression", () => {
6
6
  testSingleCase(chrono, "we have to make something in 5 days.", new Date(2012, 7, 10), (result) => {
7
7
  expect(result.index).toBe(26);
8
8
  expect(result.text).toBe("in 5 days");
9
+ expect(result.tags()).toContain("result/relativeDate");
9
10
 
10
11
  expect(result.start).not.toBeNull();
11
12
  expect(result.start.get("year")).toBe(2012);
@@ -412,4 +413,5 @@ test("Test - Forward date option", () => {
412
413
  test("Test - Negative cases", () => {
413
414
  testUnexpectedResult(chrono, "in am");
414
415
  testUnexpectedResult(chrono, "in them");
416
+ testUnexpectedResult(chrono, "the second half");
415
417
  });
@@ -219,6 +219,49 @@ test("Test - Weekday casual `Next` guessing", function () {
219
219
  }
220
220
  });
221
221
 
222
+ test("Test - Casual 'weekend' and 'weekday'", () => {
223
+ {
224
+ const refDateOnFriday = new Date(2024, 10 - 1, 18, 12, 0);
225
+ testSingleCase(chrono.casual, "last weekend", refDateOnFriday, (result, text) => {
226
+ expect(result.text).toBe(text);
227
+ expect(result.start).toBeDate(new Date(2024, 10 - 1, 13, 12)); // Sunday
228
+ });
229
+ testSingleCase(chrono.casual, "this weekend", refDateOnFriday, (result, text) => {
230
+ expect(result.text).toBe(text);
231
+ expect(result.start).toBeDate(new Date(2024, 10 - 1, 19, 12)); // Saturday
232
+ });
233
+ testSingleCase(chrono.casual, "next weekend", refDateOnFriday, (result, text) => {
234
+ expect(result.text).toBe(text);
235
+ expect(result.start).toBeDate(new Date(2024, 10 - 1, 26, 12)); // Saturday
236
+ });
237
+ }
238
+ });
239
+
240
+ test("Test - Casual 'weekday' mentioning", () => {
241
+ {
242
+ const refDateOnFriday = new Date(2024, 10 - 1, 18, 12, 0);
243
+ testSingleCase(chrono.casual, "last weekday", refDateOnFriday, (result, text) => {
244
+ expect(result.text).toBe(text);
245
+ expect(result.start).toBeDate(new Date(2024, 10 - 1, 17, 12)); // Thursday
246
+ });
247
+ testSingleCase(chrono.casual, "next weekday", refDateOnFriday, (result, text) => {
248
+ expect(result.text).toBe(text);
249
+ expect(result.start).toBeDate(new Date(2024, 10 - 1, 21, 12)); // Monday
250
+ });
251
+ }
252
+ {
253
+ const refDateOnSaturday = new Date(2024, 10 - 1, 19, 12, 0);
254
+ testSingleCase(chrono.casual, "last weekday", refDateOnSaturday, (result, text) => {
255
+ expect(result.text).toBe(text);
256
+ expect(result.start).toBeDate(new Date(2024, 10 - 1, 18, 12)); // Friday
257
+ });
258
+ testSingleCase(chrono.casual, "next weekday", refDateOnSaturday, (result, text) => {
259
+ expect(result.text).toBe(text);
260
+ expect(result.start).toBeDate(new Date(2024, 10 - 1, 21, 12)); // Monday
261
+ });
262
+ }
263
+ });
264
+
222
265
  test("Test - Weekday With Casual Time", function () {
223
266
  testSingleCase(chrono.casual, "Lets meet on Tuesday morning", new Date(2015, 3, 18), (result) => {
224
267
  expect(result.index).toBe(10);
@@ -10,6 +10,14 @@ test("Test - Single Expression", function () {
10
10
  expect(result.text).toBe("きょう");
11
11
  expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
12
12
  });
13
+ testSingleCase(chrono.ja, "本日はお日柄もよく", new Date(2012, 8 - 1, 10, 12), (result) => {
14
+ expect(result.text).toBe("本日");
15
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
16
+ });
17
+ testSingleCase(chrono.ja, "ほんじつはお日柄もよく", new Date(2012, 8 - 1, 10, 12), (result) => {
18
+ expect(result.text).toBe("ほんじつ");
19
+ expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
20
+ });
13
21
 
14
22
  testSingleCase(chrono.ja, "昨日の全国観測値ランキング", new Date(2012, 8 - 1, 10, 12), (result) => {
15
23
  expect(result.text).toBe("昨日");
@@ -213,4 +213,23 @@ test("Test - Range Expression", function () {
213
213
 
214
214
  expect(result.end).toBeDate(new Date(2014, 1 - 1, 7, 12));
215
215
  });
216
+
217
+ testSingleCase(chrono.ja, "2013年12月26日 ~ 2014年1月7日", new Date(2012, 8 - 1, 10), (result) => {
218
+ expect(result.index).toBe(0);
219
+ expect(result.text).toBe("2013年12月26日 ~ 2014年1月7日");
220
+
221
+ expect(result.start).not.toBeNull();
222
+ expect(result.start.get("year")).toBe(2013);
223
+ expect(result.start.get("month")).toBe(12);
224
+ expect(result.start.get("day")).toBe(26);
225
+
226
+ expect(result.start).toBeDate(new Date(2013, 12 - 1, 26, 12));
227
+
228
+ expect(result.end).not.toBeNull();
229
+ expect(result.end.get("year")).toBe(2014);
230
+ expect(result.end.get("month")).toBe(1);
231
+ expect(result.end.get("day")).toBe(7);
232
+
233
+ expect(result.end).toBeDate(new Date(2014, 1 - 1, 7, 12));
234
+ });
216
235
  });