Skip to content

Instantly share code, notes, and snippets.

@GitMurf
Created October 20, 2021 18:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GitMurf/3a5688d40b013a2e5b8dc5b43481f7f1 to your computer and use it in GitHub Desktop.
Save GitMurf/3a5688d40b013a2e5b8dc5b43481f7f1 to your computer and use it in GitHub Desktop.
<%*
//v1.0
let cmEditorAct = this.app.workspace.activeLeaf.view.editor;
let curLine = cmEditorAct.getCursor().line;
cmEditorAct.setSelection({ line: curLine, ch: 0 }, { line: curLine, ch: 9999 });
let dueDateStr = await tp.system.prompt("Due Date");
let parseResult;
let parseResultLink;
if(dueDateStr) {
let nlDatesPlugin = this.app.plugins.getPlugin('nldates-obsidian');
parseResult = nlDatesPlugin.parseDate(dueDateStr);
if(parseResult){parseResultLink = '[' + '[' + parseResult.formattedString + ']]';}
}
let fileFrom = '[' + '[' + tp.file.title + ']]';
let createdOn = '[' + '[' + tp.date.now('YYYY-MM-DD') + ']]';
let selectedText = tp.file.selection();
let origSelectText = selectedText;
selectedText = selectedText.replace(/[ ]*[\-\*] /, '').trim();
selectedText = selectedText.replace(/[ ]*\[ \][ ]*/, '').trim();
let selectedTextTitle = selectedText.replace(/[\.#\*"\/\\<>\:\|\[\]\?]/gim, '').trim().slice(0, 255);
let newFileName = "TASK_" + tp.date.now('YYYY_MM_DD_hhmmss') + " - " + selectedText;
newFileName = newFileName.replace(/[\.#\*"\/\\<>\:\|\[\]\?]/gim, '').trim().slice(0, 255);
let useSource = '';
const actFile = this.app.workspace.getActiveFile();
if(actFile) {useSource = actFile.path}
let vaultRootPath = this.app.fileManager.getNewFileParent(useSource).path;
let bTasksFolder = await this.app.vault.adapter.exists(vaultRootPath + '/tasks', false);
if(!bTasksFolder){await this.app.vault.createFolder(vaultRootPath + '/tasks');}
let newFilePath = vaultRootPath + '/tasks/' + newFileName + ".md";
let fileContentsToAdd = '---';
fileContentsToAdd += `
title: ${selectedTextTitle}
date created: ${tp.date.now('YYYY-MM-DDTHH:mm:ssZ')}
due date: [`
if(parseResultLink){fileContentsToAdd += parseResult.formattedString}
fileContentsToAdd += `]
categories: task
---
`
fileContentsToAdd += '- [ ] ' + selectedText;
fileContentsToAdd += '\n\n---';
if(parseResultLink) {
fileContentsToAdd += `
Due Date: ${parseResultLink}`;
}
fileContentsToAdd += `
Task created on ${createdOn} at ${tp.date.now("h:mm A")} from ${fileFrom}`;
let newFileObj = await this.app.vault.create(newFilePath, fileContentsToAdd);
await this.app.workspace.openLinkText(newFileObj.basename, newFileObj.path, true);
const finalText = origSelectText.replace(/([ ]*[\-\*] )?.*/, '$1' + '![' + '[' + newFileName + ']]')
tR = finalText;
%>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment