edited notes: allow spaces between keyword and delta in #dateNote

to be compatible with existing search syntax
This commit is contained in:
contributor 2025-11-17 12:42:05 +02:00
parent f083908293
commit 2a65b85302
2 changed files with 11 additions and 5 deletions

View File

@ -19,7 +19,7 @@ const expectedYear = "2025";
const expectedYearMinus1 = "2024";
function keywordResolvesToDate(dateStrOrKeyword: string, expectedDate: string) {
cls.init(() => {
cls.init(() => {
cls.set("localNowDateTime", clientDate);
const dateFilter = dateNoteLabelKeywordToDateFilter(dateStrOrKeyword);
expect(dateFilter.date).toBe(expectedDate);
@ -27,7 +27,7 @@ function keywordResolvesToDate(dateStrOrKeyword: string, expectedDate: string) {
}
function keywordDoesNotResolve(dateStrOrKeyword: string) {
cls.init(() => {
cls.init(() => {
cls.set("localNowDateTime", clientDate);
const dateFilter = dateNoteLabelKeywordToDateFilter(dateStrOrKeyword);
expect(dateFilter.date).toBe(null);
@ -36,7 +36,7 @@ function keywordDoesNotResolve(dateStrOrKeyword: string) {
describe("edited-notes::dateNoteLabelKeywordToDateFilter", () => {
beforeEach(() => {
vi.stubEnv('TZ', 'UTC');
vi.stubEnv("TZ", "UTC");
vi.useFakeTimers();
vi.setSystemTime(new Date(serverDate));
});
@ -67,6 +67,12 @@ describe("edited-notes::dateNoteLabelKeywordToDateFilter", () => {
keywordResolvesToDate("TODAY-1", expectedTodayMinus1);
});
it("resolves 'TODAY - 1' (with spaces) to yesterday's date", () => {
keywordResolvesToDate("TODAY - 1", expectedTodayMinus1);
keywordResolvesToDate("TODAY- 1", expectedTodayMinus1);
keywordResolvesToDate("TODAY -1", expectedTodayMinus1);
});
it("resolves 'MONTH-2' to 2 months ago", () => {
keywordResolvesToDate("MONTH-2", expectedMonthMinus2);
});

View File

@ -155,11 +155,11 @@ type DateFilter = DateValue;
* @returns A `DateFilter` object containing the resolved date string.
*/
export function dateNoteLabelKeywordToDateFilter(dateStr: string): DateFilter {
const keywordAndDelta = dateStr.match(/^(today|month|year)([+-]\d+)?$/i);
const keywordAndDelta = dateStr.match(/^(today|month|year)\s*([+-]\s*\d+)?$/i);
if (keywordAndDelta) {
const keyword = keywordAndDelta[1].toLowerCase();
const delta = keywordAndDelta[2] ? parseInt(keywordAndDelta[2]) : 0;
const delta = parseInt(keywordAndDelta[2]?.replace(/\s/g, "") ?? "0");
const clientDate = dayjs(dateUtils.localNowDate());
const date = formatDateFromKeywordAndDelta(clientDate, keyword, delta);