Skip to content

Commit

Permalink
Fix: small performance improvement through caching
Browse files Browse the repository at this point in the history
  • Loading branch information
Wanasit Tanakitrungruang committed Mar 21, 2021
1 parent ac08a8c commit fab8f51
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 5 deletions.
2 changes: 1 addition & 1 deletion benchmark/benchmark.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const chrono = require("..");
const b = require("benny");

b.suite(
"Example",
"Basic parsing benchmark",

b.add("Parsing empty string", () => {
chrono.parse("");
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
},
"scripts": {
"build": "tsc -p tsconfig.build.json",
"benchmark": "node ./benchmark/benchmark.js",
"benchmark": "npm run build && node ./benchmark/benchmark.js",
"document": "typedoc",
"prepare": "npm run build",
"eslint": "eslint src test",
Expand Down
4 changes: 3 additions & 1 deletion src/locales/en/parsers/ENCasualDateParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/
import { assignSimilarDate } from "../../../utils/dayjs";
import * as references from "../../../common/casualReferences";

const PATTERN = /(now|today|tonight|tomorrow|tmr|yesterday|last\s*night)(?=\W|$)/i;

export default class ENCasualDateParser extends AbstractParserWithWordBoundaryChecking {
innerPattern(context: ParsingContext): RegExp {
return /(now|today|tonight|tomorrow|tmr|yesterday|last\s*night)(?=\W|$)/i;
return PATTERN;
}

innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents | ParsingResult {
Expand Down
4 changes: 3 additions & 1 deletion src/locales/en/parsers/ENCasualTimeParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/
import dayjs from "dayjs";
import { assignTheNextDay } from "../../../utils/dayjs";

const PATTERN = /(?:this)?\s*(morning|afternoon|evening|night|midnight|noon)(?=\W|$)/i;

export default class ENCasualTimeParser extends AbstractParserWithWordBoundaryChecking {
innerPattern() {
return /(?:this)?\s*(morning|afternoon|evening|night|midnight|noon)(?=\W|$)/i;
return PATTERN;
}

innerExtract(context: ParsingContext, match: RegExpMatchArray) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import { ParsingComponents } from "../../../results";
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
import { reverseTimeUnits } from "../../../utils/timeunits";

const PATTERN = new RegExp(`(this|last|past|next|\\+|-)\\s*(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i");

export default class ENTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundaryChecking {
innerPattern(): RegExp {
return new RegExp(`(this|last|past|next|\\+|-)\\s*(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i");
return PATTERN;
}

innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents {
Expand Down

0 comments on commit fab8f51

Please sign in to comment.