Skip to content

Commit

Permalink
New: add debug tags for parser/SlashDateFormatParser and parser/ENTim…
Browse files Browse the repository at this point in the history
…eExpressionParser
  • Loading branch information
Wanasit Tanakitrungruang committed Oct 20, 2024
1 parent 3a15d3d commit 6646c75
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/common/parsers/SlashDateFormatParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,6 @@ export default class SlashDateFormatParser implements Parser {
result.start.imply("year", year);
}

return result;
return result.addTag("parser/SlashDateFormatParser");
}
}
14 changes: 13 additions & 1 deletion src/locales/en/parsers/ENTimeExpressionParser.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ParsingContext } from "../../../chrono";
import { ParsingComponents } from "../../../results";
import { ParsingComponents, ParsingResult } from "../../../results";
import { Meridiem } from "../../../types";
import { AbstractTimeExpressionParser } from "../../../common/parsers/AbstractTimeExpressionParser";

Expand Down Expand Up @@ -54,4 +54,16 @@ export default class ENTimeExpressionParser extends AbstractTimeExpressionParser

return components.addTag("parser/ENTimeExpressionParser");
}

extractFollowingTimeComponents(
context: ParsingContext,
match: RegExpMatchArray,
result: ParsingResult
): ParsingComponents | null {
const followingComponents = super.extractFollowingTimeComponents(context, match, result);
if (followingComponents) {
followingComponents.addTag("parser/ENTimeExpressionParser");
}
return followingComponents;
}
}
16 changes: 16 additions & 0 deletions src/results.ts
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,22 @@ export class ParsingResult implements ParsedResult {
return this.start.date();
}

addTag(tag: string): ParsingResult {
this.start.addTag(tag);
if (this.end) {
this.end.addTag(tag);
}
return this;
}

addTags(tags: string[] | Set<string>): ParsingResult {
this.start.addTags(tags);
if (this.end) {
this.end.addTags(tags);
}
return this;
}

tags(): Set<string> {
const combinedTags: Set<string> = new Set(this.start.tags());
if (this.end) {
Expand Down
4 changes: 4 additions & 0 deletions test/en/en_slash.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ test("Test - Single Expression (MM/dd/yyyy)", function () {

expect(result.index).toBe(0);
expect(result.text).toBe("8/10/2012");
expect(result.tags()).toContain("parser/SlashDateFormatParser");

expect(result.start.isCertain("day")).toBe(true);
expect(result.start.isCertain("month")).toBe(true);
Expand Down Expand Up @@ -161,18 +162,21 @@ test("Test - Range Expression", function () {
testSingleCase(chrono.en, "8/10/2012 - 8/15/2012", new Date(2012, 7, 10), (result) => {
expect(result.index).toBe(0);
expect(result.text).toBe("8/10/2012 - 8/15/2012");
expect(result.tags()).toContain("parser/SlashDateFormatParser");

expect(result.start).not.toBeNull();
expect(result.start.get("year")).toBe(2012);
expect(result.start.get("month")).toBe(8);
expect(result.start.get("day")).toBe(10);
expect(result.start.tags()).toContain("parser/SlashDateFormatParser");

expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));

expect(result.end).not.toBeNull();
expect(result.end.get("year")).toBe(2012);
expect(result.end.get("month")).toBe(8);
expect(result.end.get("day")).toBe(15);
expect(result.end.tags()).toContain("parser/SlashDateFormatParser");

expect(result.end).toBeDate(new Date(2012, 8 - 1, 15, 12));
});
Expand Down
9 changes: 9 additions & 0 deletions test/en/en_time_exp.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ test("Test - Time expression", function () {
expect(result.start.get("minute")).toBe(32);
expect(result.start.get("second")).toBe(13);
expect(result.start.get("meridiem")).toBe(Meridiem.PM);

expect(result.tags()).toContain("parser/ENTimeExpressionParser");
expect(result.start.tags()).toContain("parser/ENTimeExpressionParser");
});
});

Expand All @@ -35,6 +38,9 @@ test("Test - Time expression after date", function () {
expect(result.start.get("hour")).toBe(14);
expect(result.start.get("minute")).toBe(15);
expect(result.start.get("meridiem")).toBe(Meridiem.PM);

expect(result.tags()).toContain("parser/ENTimeExpressionParser");
expect(result.start.tags()).toContain("parser/ENTimeExpressionParser");
});

testSingleCase(chrono, "05/31/2024.14:15", new Date(2016, 10 - 1, 1, 8), (result, text) => {
Expand Down Expand Up @@ -115,16 +121,19 @@ test("Test - Time expression before date", () => {
test("Test - Time range expression", function () {
testSingleCase(chrono, "10:00:00 - 21:45:00", new Date(2016, 10 - 1, 1, 8), (result, text) => {
expect(result.text).toBe(text);
expect(result.tags()).toContain("parser/ENTimeExpressionParser");

expect(result.start.get("hour")).toBe(10);
expect(result.start.get("minute")).toBe(0);
expect(result.start.get("second")).toBe(0);
expect(result.start.get("meridiem")).toBe(Meridiem.AM);
expect(result.start.tags()).toContain("parser/ENTimeExpressionParser");

expect(result.end.get("hour")).toBe(21);
expect(result.end.get("minute")).toBe(45);
expect(result.end.get("second")).toBe(0);
expect(result.end.get("meridiem")).toBe(Meridiem.PM);
expect(result.end.tags()).toContain("parser/ENTimeExpressionParser");
});

testSingleCase(chrono, "10:00:00 until 21:45:00", new Date(2016, 10 - 1, 1, 11), (result, text) => {
Expand Down

0 comments on commit 6646c75

Please sign in to comment.