diff --git a/src/modules/parseTaskText.test.ts b/src/modules/parseTaskText.test.ts index 5828bd057..0fabcb1a6 100644 --- a/src/modules/parseTaskText.test.ts +++ b/src/modules/parseTaskText.test.ts @@ -566,6 +566,13 @@ describe('Parse Task Text', () => { expect(result.labels).toHaveLength(1) expect(result.labels[0]).toBe('label with space') }) + it('should not parse labels called date expressions as dates', () => { + const result = parseTaskText('Lorem Ipsum *today') + + expect(result.text).toBe('Lorem Ipsum') + expect(result.labels).toHaveLength(1) + expect(result.labels[0]).toBe('today') + }) }) describe('List', () => { @@ -593,6 +600,12 @@ describe('Parse Task Text', () => { expect(result.text).toBe('Lorem Ipsum +list2 +list3') expect(result.list).toBe('list1') }) + it('should parse a list that\'s called like a date as list', () => { + const result = parseTaskText(`Lorem Ipsum +today`) + + expect(result.text).toBe('Lorem Ipsum') + expect(result.list).toBe('today') + }) }) describe('Priority', () => { @@ -657,6 +670,13 @@ describe('Parse Task Text', () => { expect(result.assignees).toHaveLength(1) expect(result.assignees[0]).toBe('user with long name') }) + it('should parse an assignee who is called like a date as assignee', () => { + const result = parseTaskText(`Lorem Ipsum @today`) + + expect(result.text).toBe('Lorem Ipsum') + expect(result.assignees).toHaveLength(1) + expect(result.assignees[0]).toBe('today') + }) }) describe('Recurring Dates', () => { diff --git a/src/modules/parseTaskText.ts b/src/modules/parseTaskText.ts index 319bada8f..5bbf9a55d 100644 --- a/src/modules/parseTaskText.ts +++ b/src/modules/parseTaskText.ts @@ -72,15 +72,19 @@ export const parseTaskText = (text: string, prefixesMode: PrefixMode = PrefixMod } result.labels = getItemsFromPrefix(text, prefixes.label) + result.text = cleanupItemText(result.text, result.labels, prefixes.label) - const lists: string[] = getItemsFromPrefix(text, prefixes.list) + const lists: string[] = getItemsFromPrefix(result.text, prefixes.list) result.list = lists.length > 0 ? lists[0] : null + result.text = result.list !== null ? cleanupItemText(result.text, [result.list], prefixes.list) : result.text - result.priority = getPriority(text, prefixes.priority) + result.priority = getPriority(result.text, prefixes.priority) + result.text = result.priority !== null ? cleanupItemText(result.text, [String(result.priority)], prefixes.priority) : result.text - result.assignees = getItemsFromPrefix(text, prefixes.assignee) + result.assignees = getItemsFromPrefix(result.text, prefixes.assignee) + result.text = cleanupItemText(result.text, result.assignees, prefixes.assignee) - const {textWithoutMatched, repeats} = getRepeats(text) + const {textWithoutMatched, repeats} = getRepeats(result.text) result.text = textWithoutMatched result.repeats = repeats @@ -117,7 +121,10 @@ const getItemsFromPrefix = (text: string, prefix: string): string[] => { // Only until the next space itemText = p.split(' ')[0] } - items.push(itemText) + + if(itemText !== '') { + items.push(itemText) + } }) return Array.from(new Set(items))