Skip to content

Commit cdfb6bc

Browse files
author
Wanasit Tanakitrungruang
committedApr 4, 2021
Fix: Improve performance by avoid unnecessary parsing in time exp
1 parent 053cc8f commit cdfb6bc

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed
 

‎src/common/parsers/AbstractTimeExpressionParser.ts

+14-10
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,23 @@ export abstract class AbstractTimeExpressionParser implements Parser {
106106
strict = false
107107
): null | ParsingComponents {
108108
const components = context.createParsingComponents();
109-
let hour = 0;
110109
let minute = 0;
111110
let meridiem = null;
112111

113112
// ----- Hours
114-
hour = parseInt(match[HOUR_GROUP]);
113+
let hour = parseInt(match[HOUR_GROUP]);
114+
if (hour > 100) {
115+
if (this.strictMode || match[MINUTE_GROUP] != null) {
116+
return null;
117+
}
118+
119+
minute = hour % 100;
120+
hour = Math.floor(hour / 100);
121+
}
122+
123+
if (hour > 24) {
124+
return null;
125+
}
115126

116127
// ----- Minutes
117128
if (match[MINUTE_GROUP] != null) {
@@ -121,16 +132,9 @@ export abstract class AbstractTimeExpressionParser implements Parser {
121132
}
122133

123134
minute = parseInt(match[MINUTE_GROUP]);
124-
} else if (hour > 100) {
125-
if (this.strictMode) {
126-
return null;
127-
}
128-
129-
minute = hour % 100;
130-
hour = Math.floor(hour / 100);
131135
}
132136

133-
if (minute >= 60 || hour > 24) {
137+
if (minute >= 60) {
134138
return null;
135139
}
136140

‎src/locales/en/parsers/ENTimeExpressionParser.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default class ENTimeExpressionParser extends AbstractTimeExpressionParser
1717
}
1818

1919
primarySuffix(): string {
20-
return "(?:\\s*(?:o\\W*clock|at\\s*night|in\\s*the\\s*(?:morning|afternoon)))?(?=\\W|$)";
20+
return "(?:\\s*(?:o\\W*clock|at\\s*night|in\\s*the\\s*(?:morning|afternoon)))?(?!/)(?=\\W|$)";
2121
}
2222

2323
extractPrimaryTimeComponents(context: ParsingContext, match: RegExpMatchArray): null | ParsingComponents {

0 commit comments

Comments
 (0)
Please sign in to comment.