chrono-node 2.7.6 → 2.7.7

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 (88) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/common/parsers/ISOFormatParser.d.ts +1 -12
  3. package/dist/cjs/common/parsers/ISOFormatParser.js +30 -28
  4. package/dist/cjs/common/parsers/ISOFormatParser.js.map +1 -1
  5. package/dist/cjs/common/parsers/SlashDateFormatParser.js +13 -6
  6. package/dist/cjs/common/parsers/SlashDateFormatParser.js.map +1 -1
  7. package/dist/cjs/common/refiners/ForwardDateRefiner.js +8 -5
  8. package/dist/cjs/common/refiners/ForwardDateRefiner.js.map +1 -1
  9. package/dist/cjs/locales/en/configuration.js +4 -2
  10. package/dist/cjs/locales/en/configuration.js.map +1 -1
  11. package/dist/cjs/locales/en/constants.d.ts +1 -1
  12. package/dist/cjs/locales/en/constants.js +6 -0
  13. package/dist/cjs/locales/en/constants.js.map +1 -1
  14. package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js +3 -0
  15. package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
  16. package/dist/cjs/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +3 -0
  17. package/dist/cjs/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -1
  18. package/dist/cjs/locales/en/parsers/ENTimeUnitLaterFormatParser.js +5 -2
  19. package/dist/cjs/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -1
  20. package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js +3 -0
  21. package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
  22. package/dist/cjs/locales/en/parsers/{ENCasualYearMonthDayParser.d.ts → ENYearMonthDayParser.d.ts} +3 -1
  23. package/dist/cjs/locales/en/parsers/{ENCasualYearMonthDayParser.js → ENYearMonthDayParser.js} +20 -8
  24. package/dist/cjs/locales/en/parsers/ENYearMonthDayParser.js.map +1 -0
  25. package/dist/cjs/locales/en/refiners/ENExtractYearSuffixRefiner.d.ts +5 -0
  26. package/dist/cjs/locales/en/refiners/ENExtractYearSuffixRefiner.js +31 -0
  27. package/dist/cjs/locales/en/refiners/ENExtractYearSuffixRefiner.js.map +1 -0
  28. package/dist/cjs/locales/en/refiners/ENMergeDateTimeRefiner.js +1 -1
  29. package/dist/cjs/locales/en/refiners/ENMergeDateTimeRefiner.js.map +1 -1
  30. package/dist/cjs/results.js +7 -4
  31. package/dist/cjs/results.js.map +1 -1
  32. package/dist/esm/common/parsers/ISOFormatParser.d.ts +1 -12
  33. package/dist/esm/common/parsers/ISOFormatParser.js +30 -28
  34. package/dist/esm/common/parsers/ISOFormatParser.js.map +1 -1
  35. package/dist/esm/common/parsers/SlashDateFormatParser.js +13 -6
  36. package/dist/esm/common/parsers/SlashDateFormatParser.js.map +1 -1
  37. package/dist/esm/common/refiners/ForwardDateRefiner.js +8 -5
  38. package/dist/esm/common/refiners/ForwardDateRefiner.js.map +1 -1
  39. package/dist/esm/locales/en/configuration.js +4 -2
  40. package/dist/esm/locales/en/configuration.js.map +1 -1
  41. package/dist/esm/locales/en/constants.d.ts +1 -1
  42. package/dist/esm/locales/en/constants.js +6 -0
  43. package/dist/esm/locales/en/constants.js.map +1 -1
  44. package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js +3 -0
  45. package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
  46. package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +3 -0
  47. package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -1
  48. package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js +5 -2
  49. package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -1
  50. package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js +3 -0
  51. package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
  52. package/dist/esm/locales/en/parsers/{ENCasualYearMonthDayParser.d.ts → ENYearMonthDayParser.d.ts} +3 -1
  53. package/dist/esm/locales/en/parsers/{ENCasualYearMonthDayParser.js → ENYearMonthDayParser.js} +19 -7
  54. package/dist/esm/locales/en/parsers/ENYearMonthDayParser.js.map +1 -0
  55. package/dist/esm/locales/en/refiners/ENExtractYearSuffixRefiner.d.ts +5 -0
  56. package/dist/esm/locales/en/refiners/ENExtractYearSuffixRefiner.js +28 -0
  57. package/dist/esm/locales/en/refiners/ENExtractYearSuffixRefiner.js.map +1 -0
  58. package/dist/esm/locales/en/refiners/ENMergeDateTimeRefiner.js +1 -1
  59. package/dist/esm/locales/en/refiners/ENMergeDateTimeRefiner.js.map +1 -1
  60. package/dist/esm/results.js +7 -4
  61. package/dist/esm/results.js.map +1 -1
  62. package/package.json +1 -1
  63. package/src/common/parsers/ISOFormatParser.ts +30 -32
  64. package/src/common/parsers/SlashDateFormatParser.ts +13 -10
  65. package/src/common/refiners/ForwardDateRefiner.ts +8 -5
  66. package/src/locales/en/configuration.ts +8 -2
  67. package/src/locales/en/constants.ts +7 -1
  68. package/src/locales/en/parsers/ENTimeUnitAgoFormatParser.ts +3 -1
  69. package/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts +4 -2
  70. package/src/locales/en/parsers/ENTimeUnitLaterFormatParser.ts +5 -2
  71. package/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +4 -2
  72. package/src/locales/en/parsers/{ENCasualYearMonthDayParser.ts → ENYearMonthDayParser.ts} +18 -7
  73. package/src/locales/en/refiners/ENExtractYearSuffixRefiner.ts +34 -0
  74. package/src/locales/en/refiners/ENMergeDateTimeRefiner.ts +1 -1
  75. package/src/results.ts +8 -5
  76. package/test/en/en_inter_std.test.ts +30 -28
  77. package/test/en/en_merging_relative_dates.test.ts +3 -4
  78. package/test/en/en_slash.test.ts +47 -42
  79. package/test/en/en_time_exp.test.ts +58 -0
  80. package/test/en/en_time_units_ago.test.ts +34 -0
  81. package/test/en/en_time_units_casual_relative.test.ts +3 -0
  82. package/test/en/en_time_units_later.test.ts +4 -0
  83. package/test/en/en_time_units_within.test.ts +5 -0
  84. package/test/en/en_year.test.ts +26 -1
  85. package/test/en/{en_casual_year_month_day.test.ts → en_year_month_day.test.ts} +25 -4
  86. package/test/system.test.ts +2 -0
  87. package/dist/cjs/locales/en/parsers/ENCasualYearMonthDayParser.js.map +0 -1
  88. package/dist/esm/locales/en/parsers/ENCasualYearMonthDayParser.js.map +0 -1
@@ -93,7 +93,7 @@ export class ParsingComponents {
93
93
  return !this.isCertain("hour") && !this.isCertain("minute") && !this.isCertain("second");
94
94
  }
95
95
  isOnlyTime() {
96
- return !this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month");
96
+ return (!this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month") && !this.isCertain("year"));
97
97
  }
98
98
  isOnlyWeekdayComponent() {
99
99
  return this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month");
@@ -171,10 +171,13 @@ export class ParsingComponents {
171
171
  components.assign("month", date.month() + 1);
172
172
  components.assign("year", date.year());
173
173
  }
174
+ else if (fragments["week"]) {
175
+ components.assign("day", date.date());
176
+ components.assign("month", date.month() + 1);
177
+ components.assign("year", date.year());
178
+ components.imply("weekday", date.day());
179
+ }
174
180
  else {
175
- if (fragments["week"]) {
176
- components.imply("weekday", date.day());
177
- }
178
181
  components.imply("day", date.date());
179
182
  if (fragments["month"]) {
180
183
  components.assign("month", date.month() + 1);
@@ -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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"}
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "preset": "ts-jest"
16
16
  },
17
17
  "license": "MIT",
18
- "version": "2.7.6",
18
+ "version": "2.7.7",
19
19
  "directories": {
20
20
  "source": "./src",
21
21
  "test": "./test"
@@ -18,7 +18,7 @@ const PATTERN = new RegExp(
18
18
  "(?:" +
19
19
  ":([0-9]{1,2})(?:\\.(\\d{1,4}))?" +
20
20
  ")?" + // :ss.s
21
- "(?:" +
21
+ "(" +
22
22
  "Z|([+-]\\d{2}):?(\\d{2})?" +
23
23
  ")?" + // TZD (Z or ±hh:mm or ±hhmm or ±hh)
24
24
  ")?" +
@@ -33,8 +33,9 @@ const HOUR_NUMBER_GROUP = 4;
33
33
  const MINUTE_NUMBER_GROUP = 5;
34
34
  const SECOND_NUMBER_GROUP = 6;
35
35
  const MILLISECOND_NUMBER_GROUP = 7;
36
- const TZD_HOUR_OFFSET_GROUP = 8;
37
- const TZD_MINUTE_OFFSET_GROUP = 9;
36
+ const TZD_GROUP = 8;
37
+ const TZD_HOUR_OFFSET_GROUP = 9;
38
+ const TZD_MINUTE_OFFSET_GROUP = 10;
38
39
 
39
40
  export default class ISOFormatParser extends AbstractParserWithWordBoundaryChecking {
40
41
  innerPattern(): RegExp {
@@ -42,44 +43,41 @@ export default class ISOFormatParser extends AbstractParserWithWordBoundaryCheck
42
43
  }
43
44
 
44
45
  innerExtract(context: ParsingContext, match: RegExpMatchArray) {
45
- const components: { [component in Component]?: number } = {};
46
- components["year"] = parseInt(match[YEAR_NUMBER_GROUP]);
47
- components["month"] = parseInt(match[MONTH_NUMBER_GROUP]);
48
- components["day"] = parseInt(match[DATE_NUMBER_GROUP]);
49
-
46
+ const components = context.createParsingComponents({
47
+ "year": parseInt(match[YEAR_NUMBER_GROUP]),
48
+ "month": parseInt(match[MONTH_NUMBER_GROUP]),
49
+ "day": parseInt(match[DATE_NUMBER_GROUP]),
50
+ });
50
51
  if (match[HOUR_NUMBER_GROUP] != null) {
51
- components["hour"] = parseInt(match[HOUR_NUMBER_GROUP]);
52
- components["minute"] = parseInt(match[MINUTE_NUMBER_GROUP]);
52
+ components.assign("hour", parseInt(match[HOUR_NUMBER_GROUP]));
53
+ components.assign("minute", parseInt(match[MINUTE_NUMBER_GROUP]));
53
54
 
54
55
  if (match[SECOND_NUMBER_GROUP] != null) {
55
- components["second"] = parseInt(match[SECOND_NUMBER_GROUP]);
56
+ components.assign("second", parseInt(match[SECOND_NUMBER_GROUP]));
56
57
  }
57
58
 
58
59
  if (match[MILLISECOND_NUMBER_GROUP] != null) {
59
- components["millisecond"] = parseInt(match[MILLISECOND_NUMBER_GROUP]);
60
+ components.assign("millisecond", parseInt(match[MILLISECOND_NUMBER_GROUP]));
60
61
  }
61
-
62
- if (match[TZD_HOUR_OFFSET_GROUP] == null) {
63
- components["timezoneOffset"] = 0;
64
- } else {
65
- const hourOffset = parseInt(match[TZD_HOUR_OFFSET_GROUP]);
66
-
67
- let minuteOffset = 0;
68
- if (match[TZD_MINUTE_OFFSET_GROUP] != null) {
69
- minuteOffset = parseInt(match[TZD_MINUTE_OFFSET_GROUP]);
62
+ if (match[TZD_GROUP] != null) {
63
+ // The Zulu time zone (Z) is equivalent to UTC
64
+ let offset = 0;
65
+ if (match[TZD_HOUR_OFFSET_GROUP]) {
66
+ const hourOffset = parseInt(match[TZD_HOUR_OFFSET_GROUP]);
67
+ let minuteOffset = 0;
68
+ if (match[TZD_MINUTE_OFFSET_GROUP] != null) {
69
+ minuteOffset = parseInt(match[TZD_MINUTE_OFFSET_GROUP]);
70
+ }
71
+ offset = hourOffset * 60;
72
+ if (offset < 0) {
73
+ offset -= minuteOffset;
74
+ } else {
75
+ offset += minuteOffset;
76
+ }
70
77
  }
71
-
72
- let offset = hourOffset * 60;
73
- if (offset < 0) {
74
- offset -= minuteOffset;
75
- } else {
76
- offset += minuteOffset;
77
- }
78
-
79
- components["timezoneOffset"] = offset;
78
+ components.assign("timezoneOffset", offset);
80
79
  }
81
80
  }
82
-
83
- return components;
81
+ return components.addTag("parser/ISOFormatParser");
84
82
  }
85
83
  }
@@ -41,18 +41,22 @@ export default class SlashDateFormatParser implements Parser {
41
41
  extract(context: ParsingContext, match: RegExpMatchArray): ParsingResult {
42
42
  // Because of how pattern is executed on remaining text in `chrono.ts`, the character before the match could
43
43
  // still be a number (e.g. X[X/YY/ZZ] or XX[/YY/ZZ] or [XX/YY/]ZZ). We want to check and skip them.
44
- if (match[OPENING_GROUP].length == 0 && match.index > 0 && match.index < context.text.length) {
45
- const previousChar = context.text[match.index - 1];
46
- if (previousChar >= "0" && previousChar <= "9") {
44
+ const index = match.index + match[OPENING_GROUP].length;
45
+ const indexEnd = match.index + match[0].length - match[ENDING_GROUP].length;
46
+ if (index > 0) {
47
+ const textBefore = context.text.substring(0, index);
48
+ if (textBefore.match("\\d/?$")) {
49
+ return;
50
+ }
51
+ }
52
+ if (indexEnd < context.text.length) {
53
+ const textAfter = context.text.substring(indexEnd);
54
+ if (textAfter.match("^/?\\d")) {
47
55
  return;
48
56
  }
49
57
  }
50
58
 
51
- const index = match.index + match[OPENING_GROUP].length;
52
- const text = match[0].substr(
53
- match[OPENING_GROUP].length,
54
- match[0].length - match[OPENING_GROUP].length - match[ENDING_GROUP].length
55
- );
59
+ const text = context.text.substring(index, indexEnd);
56
60
 
57
61
  // '1.12', '1.12.12' is more like a version numbers
58
62
  if (text.match(/^\d\.\d$/) || text.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/)) {
@@ -61,14 +65,13 @@ export default class SlashDateFormatParser implements Parser {
61
65
 
62
66
  // MM/dd -> OK
63
67
  // MM.dd -> NG
64
- if (!match[YEAR_GROUP] && match[0].indexOf("/") < 0) {
68
+ if (!match[YEAR_GROUP] && text.indexOf("/") < 0) {
65
69
  return;
66
70
  }
67
71
 
68
72
  const result = context.createParsingResult(index, text);
69
73
  let month = parseInt(match[this.groupNumberMonth]);
70
74
  let day = parseInt(match[this.groupNumberDay]);
71
-
72
75
  if (month < 1 || month > 12) {
73
76
  if (month > 12) {
74
77
  if (day >= 1 && day <= 12 && month <= 31) {
@@ -15,7 +15,7 @@ export default class ForwardDateRefiner implements Refiner {
15
15
  return results;
16
16
  }
17
17
 
18
- results.forEach(function (result) {
18
+ results.forEach((result) => {
19
19
  let refMoment = dayjs(context.refDate);
20
20
 
21
21
  if (result.start.isOnlyTime() && refMoment.isAfter(result.start.dayjs())) {
@@ -28,6 +28,9 @@ export default class ForwardDateRefiner implements Refiner {
28
28
  implySimilarDate(result.end, refMoment);
29
29
  }
30
30
  }
31
+ context.debug(() => {
32
+ console.log(`${this.constructor.name} adjusted ${result} time result (${result.start})`);
33
+ });
31
34
  }
32
35
 
33
36
  if (result.start.isOnlyWeekdayComponent() && refMoment.isAfter(result.start.dayjs())) {
@@ -41,7 +44,7 @@ export default class ForwardDateRefiner implements Refiner {
41
44
  result.start.imply("month", refMoment.month() + 1);
42
45
  result.start.imply("year", refMoment.year());
43
46
  context.debug(() => {
44
- console.log(`Forward weekly adjusted for ${result} (${result.start})`);
47
+ console.log(`${this.constructor.name} adjusted ${result} weekday (${result.start})`);
45
48
  });
46
49
 
47
50
  if (result.end && result.end.isOnlyWeekdayComponent()) {
@@ -56,7 +59,7 @@ export default class ForwardDateRefiner implements Refiner {
56
59
  result.end.imply("month", refMoment.month() + 1);
57
60
  result.end.imply("year", refMoment.year());
58
61
  context.debug(() => {
59
- console.log(`Forward weekly adjusted for ${result} (${result.end})`);
62
+ console.log(`${this.constructor.name} adjusted ${result} weekday (${result.end})`);
60
63
  });
61
64
  }
62
65
  }
@@ -67,13 +70,13 @@ export default class ForwardDateRefiner implements Refiner {
67
70
  for (let i = 0; i < 3 && refMoment.isAfter(result.start.dayjs()); i++) {
68
71
  result.start.imply("year", result.start.get("year") + 1);
69
72
  context.debug(() => {
70
- console.log(`Forward yearly adjusted for ${result} (${result.start})`);
73
+ console.log(`${this.constructor.name} adjusted ${result} year (${result.start})`);
71
74
  });
72
75
 
73
76
  if (result.end && !result.end.isCertain("year")) {
74
77
  result.end.imply("year", result.end.get("year") + 1);
75
78
  context.debug(() => {
76
- console.log(`Forward yearly adjusted for ${result} (${result.end})`);
79
+ console.log(`${this.constructor.name} adjusted ${result} month (${result.start})`);
77
80
  });
78
81
  }
79
82
  }
@@ -4,7 +4,7 @@ import ENTimeUnitWithinFormatParser from "./parsers/ENTimeUnitWithinFormatParser
4
4
  import ENMonthNameLittleEndianParser from "./parsers/ENMonthNameLittleEndianParser";
5
5
  import ENMonthNameMiddleEndianParser from "./parsers/ENMonthNameMiddleEndianParser";
6
6
  import ENMonthNameParser from "./parsers/ENMonthNameParser";
7
- import ENCasualYearMonthDayParser from "./parsers/ENCasualYearMonthDayParser";
7
+ import ENYearMonthDayParser from "./parsers/ENYearMonthDayParser";
8
8
  import ENSlashMonthFormatParser from "./parsers/ENSlashMonthFormatParser";
9
9
  import ENTimeExpressionParser from "./parsers/ENTimeExpressionParser";
10
10
  import ENTimeUnitAgoFormatParser from "./parsers/ENTimeUnitAgoFormatParser";
@@ -23,6 +23,7 @@ import ENTimeUnitCasualRelativeFormatParser from "./parsers/ENTimeUnitCasualRela
23
23
  import ENMergeRelativeAfterDateRefiner from "./refiners/ENMergeRelativeAfterDateRefiner";
24
24
  import ENMergeRelativeFollowByDateRefiner from "./refiners/ENMergeRelativeFollowByDateRefiner";
25
25
  import OverlapRemovalRefiner from "../../common/refiners/OverlapRemovalRefiner";
26
+ import ENExtractYearSuffixRefiner from "./refiners/ENExtractYearSuffixRefiner";
26
27
 
27
28
  export default class ENDefaultConfiguration {
28
29
  /**
@@ -54,7 +55,6 @@ export default class ENDefaultConfiguration {
54
55
  new ENMonthNameLittleEndianParser(),
55
56
  new ENMonthNameMiddleEndianParser(/*shouldSkipYearLikeDate=*/ littleEndian),
56
57
  new ENWeekdayParser(),
57
- new ENCasualYearMonthDayParser(),
58
58
  new ENSlashMonthFormatParser(),
59
59
  new ENTimeExpressionParser(strictMode),
60
60
  new ENTimeUnitAgoFormatParser(strictMode),
@@ -64,6 +64,8 @@ export default class ENDefaultConfiguration {
64
64
  },
65
65
  strictMode
66
66
  );
67
+ options.parsers.unshift(new ENYearMonthDayParser(/*strictMonthDateOrder=*/ strictMode));
68
+
67
69
  // These relative-dates consideration should be done before other common refiners.
68
70
  options.refiners.unshift(new ENMergeRelativeFollowByDateRefiner());
69
71
  options.refiners.unshift(new ENMergeRelativeAfterDateRefiner());
@@ -71,6 +73,10 @@ export default class ENDefaultConfiguration {
71
73
 
72
74
  // Re-apply the date time refiner again after the timezone refinement and exclusion in common refiners.
73
75
  options.refiners.push(new ENMergeDateTimeRefiner());
76
+
77
+ // Extract year after merging date and time
78
+ options.refiners.push(new ENExtractYearSuffixRefiner());
79
+
74
80
  // Keep the date range refiner at the end (after all other refinements).
75
81
  options.refiners.push(new ENMergeDateRangeRefiner());
76
82
  return options;
@@ -277,7 +277,7 @@ export const TIME_UNITS_NO_ABBR_PATTERN = repeatedTimeunitPattern(
277
277
  TIME_UNIT_CONNECTOR_PATTERN
278
278
  );
279
279
 
280
- export function parseTimeUnits(timeunitText): TimeUnits {
280
+ export function parseTimeUnits(timeunitText): null | TimeUnits {
281
281
  const fragments = {};
282
282
  let remainingText = timeunitText;
283
283
  let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);
@@ -286,10 +286,16 @@ export function parseTimeUnits(timeunitText): TimeUnits {
286
286
  remainingText = remainingText.substring(match[0].length).trim();
287
287
  match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);
288
288
  }
289
+ if (Object.keys(fragments).length == 0) {
290
+ return null;
291
+ }
289
292
  return fragments;
290
293
  }
291
294
 
292
295
  function collectDateTimeFragment(fragments, match) {
296
+ if (match[0].match(/^[a-zA-Z]+$/)) {
297
+ return;
298
+ }
293
299
  const num = parseNumberPattern(match[1]);
294
300
  const unit = TIME_UNIT_DICTIONARY[match[2].toLowerCase()];
295
301
  fragments[unit] = num;
@@ -18,8 +18,10 @@ export default class ENTimeUnitAgoFormatParser extends AbstractParserWithWordBou
18
18
 
19
19
  innerExtract(context: ParsingContext, match: RegExpMatchArray) {
20
20
  const timeUnits = parseTimeUnits(match[1]);
21
+ if (!timeUnits) {
22
+ return null;
23
+ }
21
24
  const outputTimeUnits = reverseTimeUnits(timeUnits);
22
-
23
25
  return ParsingComponents.createRelativeFromReference(context.reference, outputTimeUnits);
24
26
  }
25
27
  }
@@ -19,9 +19,12 @@ export default class ENTimeUnitCasualRelativeFormatParser extends AbstractParser
19
19
  return this.allowAbbreviations ? PATTERN : PATTERN_NO_ABBR;
20
20
  }
21
21
 
22
- innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
22
+ innerExtract(context: ParsingContext, match: RegExpMatchArray) {
23
23
  const prefix = match[1].toLowerCase();
24
24
  let timeUnits = parseTimeUnits(match[2]);
25
+ if (!timeUnits) {
26
+ return null;
27
+ }
25
28
  switch (prefix) {
26
29
  case "last":
27
30
  case "past":
@@ -29,7 +32,6 @@ export default class ENTimeUnitCasualRelativeFormatParser extends AbstractParser
29
32
  timeUnits = reverseTimeUnits(timeUnits);
30
33
  break;
31
34
  }
32
-
33
35
  return ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
34
36
  }
35
37
  }
@@ -21,7 +21,10 @@ export default class ENTimeUnitLaterFormatParser extends AbstractParserWithWordB
21
21
  }
22
22
 
23
23
  innerExtract(context: ParsingContext, match: RegExpMatchArray) {
24
- const fragments = parseTimeUnits(match[GROUP_NUM_TIMEUNITS]);
25
- return ParsingComponents.createRelativeFromReference(context.reference, fragments);
24
+ const timeUnits = parseTimeUnits(match[GROUP_NUM_TIMEUNITS]);
25
+ if (!timeUnits) {
26
+ return null;
27
+ }
28
+ return ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
26
29
  }
27
30
  }
@@ -33,13 +33,15 @@ export default class ENTimeUnitWithinFormatParser extends AbstractParserWithWord
33
33
  return context.option.forwardDate ? PATTERN_WITH_OPTIONAL_PREFIX : PATTERN_WITH_PREFIX;
34
34
  }
35
35
 
36
- innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
36
+ innerExtract(context: ParsingContext, match: RegExpMatchArray) {
37
37
  // Exclude "for the unit" phases, e.g. "for the year"
38
38
  if (match[0].match(/^for\s*the\s*\w+/)) {
39
39
  return null;
40
40
  }
41
-
42
41
  const timeUnits = parseTimeUnits(match[1]);
42
+ if (!timeUnits) {
43
+ return null;
44
+ }
43
45
  return ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
44
46
  }
45
47
  }
@@ -11,8 +11,8 @@ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/
11
11
  - YYYY.MM.DD
12
12
  */
13
13
  const PATTERN = new RegExp(
14
- `([0-9]{4})[\\.\\/\\s]` +
15
- `(?:(${matchAnyPattern(MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]` +
14
+ `([0-9]{4})[-\\.\\/\\s]` +
15
+ `(?:(${matchAnyPattern(MONTH_DICTIONARY)})|([0-9]{1,2}))[-\\.\\/\\s]` +
16
16
  `([0-9]{1,2})` +
17
17
  "(?=\\W|$)",
18
18
  "i"
@@ -23,23 +23,34 @@ const MONTH_NAME_GROUP = 2;
23
23
  const MONTH_NUMBER_GROUP = 3;
24
24
  const DATE_NUMBER_GROUP = 4;
25
25
 
26
- export default class ENCasualYearMonthDayParser extends AbstractParserWithWordBoundaryChecking {
26
+ export default class ENYearMonthDayParser extends AbstractParserWithWordBoundaryChecking {
27
+ constructor(private strictMonthDateOrder: boolean) {
28
+ super();
29
+ }
30
+
27
31
  innerPattern(): RegExp {
28
32
  return PATTERN;
29
33
  }
30
34
 
31
35
  innerExtract(context: ParsingContext, match: RegExpMatchArray) {
32
- const month = match[MONTH_NUMBER_GROUP]
36
+ const year = parseInt(match[YEAR_NUMBER_GROUP]);
37
+ let day = parseInt(match[DATE_NUMBER_GROUP]);
38
+ let month = match[MONTH_NUMBER_GROUP]
33
39
  ? parseInt(match[MONTH_NUMBER_GROUP])
34
40
  : MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];
35
41
 
36
42
  if (month < 1 || month > 12) {
43
+ if (this.strictMonthDateOrder) {
44
+ return null;
45
+ }
46
+ if (day >= 1 && day <= 12) {
47
+ [month, day] = [day, month];
48
+ }
49
+ }
50
+ if (day < 1 || day > 31) {
37
51
  return null;
38
52
  }
39
53
 
40
- const year = parseInt(match[YEAR_NUMBER_GROUP]);
41
- const day = parseInt(match[DATE_NUMBER_GROUP]);
42
-
43
54
  return {
44
55
  day: day,
45
56
  month: month,
@@ -0,0 +1,34 @@
1
+ import { ParsingContext, Refiner } from "../../../chrono";
2
+ import { ParsingResult } from "../../../results";
3
+ import { YEAR_PATTERN, parseYear } from "../constants";
4
+
5
+ const YEAR_SUFFIX_PATTERN = new RegExp(`^\\s*(${YEAR_PATTERN})`, "i");
6
+ const YEAR_GROUP = 1;
7
+ export default class ENExtractYearSuffixRefiner implements Refiner {
8
+ refine(context: ParsingContext, results: ParsingResult[]): ParsingResult[] {
9
+ results.forEach(function (result) {
10
+ if (!result.start.isDateWithUnknownYear()) {
11
+ return;
12
+ }
13
+
14
+ const suffix = context.text.substring(result.index + result.text.length);
15
+ const match = YEAR_SUFFIX_PATTERN.exec(suffix);
16
+ if (!match) {
17
+ return;
18
+ }
19
+
20
+ context.debug(() => {
21
+ console.log(`Extracting year: '${match[0]}' into : ${result}`);
22
+ });
23
+
24
+ const year = parseYear(match[YEAR_GROUP]);
25
+ if (result.end != null) {
26
+ result.end.assign("year", year);
27
+ }
28
+ result.start.assign("year", year);
29
+ result.text += match[0];
30
+ });
31
+
32
+ return results;
33
+ }
34
+ }
@@ -8,6 +8,6 @@ import AbstractMergeDateTimeRefiner from "../../../common/refiners/AbstractMerge
8
8
  */
9
9
  export default class ENMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner {
10
10
  patternBetween(): RegExp {
11
- return new RegExp("^\\s*(T|at|after|before|on|of|,|-|\\.|:)?\\s*$");
11
+ return new RegExp("^\\s*(T|at|after|before|on|of|,|-|\\.|∙|:)?\\s*$");
12
12
  }
13
13
  }
package/src/results.ts CHANGED
@@ -132,7 +132,9 @@ export class ParsingComponents implements ParsedComponents {
132
132
  }
133
133
 
134
134
  isOnlyTime(): boolean {
135
- return !this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month");
135
+ return (
136
+ !this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month") && !this.isCertain("year")
137
+ );
136
138
  }
137
139
 
138
140
  isOnlyWeekdayComponent(): boolean {
@@ -230,11 +232,12 @@ export class ParsingComponents implements ParsedComponents {
230
232
  components.assign("day", date.date());
231
233
  components.assign("month", date.month() + 1);
232
234
  components.assign("year", date.year());
235
+ } else if (fragments["week"]) {
236
+ components.assign("day", date.date());
237
+ components.assign("month", date.month() + 1);
238
+ components.assign("year", date.year());
239
+ components.imply("weekday", date.day());
233
240
  } else {
234
- if (fragments["week"]) {
235
- components.imply("weekday", date.day());
236
- }
237
-
238
241
  components.imply("day", date.date());
239
242
  if (fragments["month"]) {
240
243
  components.assign("month", date.month() + 1);
@@ -27,34 +27,6 @@ test("Test - Single Expression", function () {
27
27
  expect(result.start).toBeDate(new Date(784043130000));
28
28
  });
29
29
 
30
- testSingleCase(chrono, "1994-11-05T13:15:30", new Date(2012, 7, 8), (result) => {
31
- expect(result.start).not.toBeNull();
32
- expect(result.start.get("year")).toBe(1994);
33
- expect(result.start.get("month")).toBe(11);
34
- expect(result.start.get("day")).toBe(5);
35
- expect(result.start.get("hour")).toBe(13);
36
- expect(result.start.get("minute")).toBe(15);
37
- expect(result.start.get("second")).toBe(30);
38
- expect(result.start.get("timezoneOffset")).toBe(0);
39
- expect(result.text).toBe("1994-11-05T13:15:30");
40
-
41
- expect(result.start).toBeDate(new Date(784041330000));
42
- });
43
-
44
- testSingleCase(chrono, "2015-07-31T12:00:00", new Date(2012, 7, 8), (result) => {
45
- expect(result.start).not.toBeNull();
46
- expect(result.start.get("year")).toBe(2015);
47
- expect(result.start.get("month")).toBe(7);
48
- expect(result.start.get("day")).toBe(31);
49
- expect(result.start.get("hour")).toBe(12);
50
- expect(result.start.get("minute")).toBe(0);
51
- expect(result.start.get("second")).toBe(0);
52
- expect(result.start.get("timezoneOffset")).toBe(0);
53
- expect(result.text).toBe("2015-07-31T12:00:00");
54
-
55
- expect(result.start).toBeDate(new Date(1438344000000));
56
- });
57
-
58
30
  testSingleCase(chrono, "1994-11-05T13:15:30Z", new Date(2012, 7, 8), (result) => {
59
31
  expect(result.start).not.toBeNull();
60
32
  expect(result.start.get("year")).toBe(1994);
@@ -114,3 +86,33 @@ test("Test - Single Expression", function () {
114
86
  expect(result.start).toBeDate(new Date(1462661100487));
115
87
  });
116
88
  });
89
+
90
+ test("Test - Single Expression with local timezeon", function () {
91
+ testSingleCase(chrono, "1994-11-05T13:15:30", new Date(2012, 7, 8), (result) => {
92
+ expect(result.text).toBe("1994-11-05T13:15:30");
93
+ expect(result.start.get("year")).toBe(1994);
94
+ expect(result.start.get("month")).toBe(11);
95
+ expect(result.start.get("day")).toBe(5);
96
+ expect(result.start.get("hour")).toBe(13);
97
+ expect(result.start.get("minute")).toBe(15);
98
+ expect(result.start.get("second")).toBe(30);
99
+ expect(result.start.get("millisecond")).toBe(0);
100
+
101
+ expect(result.start.isCertain("timezoneOffset")).toBe(false);
102
+ expect(result.start).toBeDate(new Date("1994-11-05T13:15:30"));
103
+ });
104
+
105
+ testSingleCase(chrono, "2015-07-31T12:00:00", new Date(2012, 7, 8), (result) => {
106
+ expect(result.text).toBe("2015-07-31T12:00:00");
107
+ expect(result.start.get("year")).toBe(2015);
108
+ expect(result.start.get("month")).toBe(7);
109
+ expect(result.start.get("day")).toBe(31);
110
+ expect(result.start.get("hour")).toBe(12);
111
+ expect(result.start.get("minute")).toBe(0);
112
+ expect(result.start.get("second")).toBe(0);
113
+ expect(result.start.get("millisecond")).toBe(0);
114
+
115
+ expect(result.start.isCertain("timezoneOffset")).toBe(false);
116
+ expect(result.start).toBeDate(new Date("2015-07-31T12:00:00"));
117
+ });
118
+ });
@@ -11,10 +11,9 @@ test("Test - Single Expression", function () {
11
11
  expect(result.start.get("day")).toBe(15);
12
12
  expect(result.start.get("weekday")).toBe(2);
13
13
 
14
- expect(result.start.isCertain("day")).toBe(false);
15
- expect(result.start.isCertain("month")).toBe(false);
16
- expect(result.start.isCertain("year")).toBe(false);
17
- expect(result.start.isCertain("weekday")).toBe(false);
14
+ expect(result.start.isCertain("day")).toBe(true);
15
+ expect(result.start.isCertain("month")).toBe(true);
16
+ expect(result.start.isCertain("year")).toBe(true);
18
17
 
19
18
  expect(result.start).toBeDate(new Date(2022, 2 - 1, 15, 0));
20
19
  });