MCPcopy Index your code
hub / github.com/callumalpass/tasknotes / processTemplateVariables

Function processTemplateVariables

src/utils/templateProcessor.ts:393–554  ·  view source on GitHub ↗
(
	template: string,
	taskData: TemplateData | ICSTemplateData
)

Source from the content-addressed store, hash-verified

391 * This is the core variable replacement function used by both frontmatter and body processing
392 */
393export function processTemplateVariables(
394 template: string,
395 taskData: TemplateData | ICSTemplateData
396): string {
397 let result = template;
398 const now = new Date();
399
400 // {{title}} - Task title
401 result = result.replace(/\{\{title\}\}/g, taskData.title || "");
402
403 // {{priority}} - Task priority
404 result = result.replace(/\{\{priority\}\}/g, taskData.priority || "");
405
406 // {{status}} - Task status
407 result = result.replace(/\{\{status\}\}/g, taskData.status || "");
408
409 // {{contexts}} - Task contexts (comma-separated)
410 const contexts = Array.isArray(taskData.contexts) ? taskData.contexts.join(", ") : "";
411 result = result.replace(/\{\{contexts\}\}/g, contexts);
412
413 // {{tags}} - Task tags (comma-separated)
414 const tags = Array.isArray(taskData.tags) ? taskData.tags.join(", ") : "";
415 result = result.replace(/\{\{tags\}\}/g, tags);
416
417 // {{hashtags}} - Task tags as space-separated hashtags
418 const hashtags = Array.isArray(taskData.tags)
419 ? taskData.tags.map((tag) => `#${tag}`).join(" ")
420 : "";
421 result = result.replace(/\{\{hashtags\}\}/g, hashtags);
422
423 // {{timeEstimate}} - Time estimate in minutes
424 result = result.replace(/\{\{timeEstimate\}\}/g, taskData.timeEstimate?.toString() || "");
425
426 // {{dueDate}} - Due date
427 result = result.replace(/\{\{dueDate\}\}/g, taskData.dueDate || "");
428
429 // {{scheduledDate}} - Scheduled date
430 result = result.replace(/\{\{scheduledDate\}\}/g, taskData.scheduledDate || "");
431
432 // {{details}} - User-provided details/description
433 result = result.replace(/\{\{details\}\}/g, taskData.details || "");
434
435 // {{parentNote}} - Parent note name/path where task was created
436 result = result.replace(/\{\{parentNote\}\}/g, taskData.parentNote || "");
437
438 // {{date}} - Current date (basic format only)
439 result = result.replace(/\{\{date\}\}/g, format(now, "yyyy-MM-dd"));
440
441 // {{time}} - Current time (basic format only)
442 result = result.replace(/\{\{time\}\}/g, format(now, "HH:mm"));
443
444 // Extended date/time variables (consistent with filename templates)
445 result = result.replace(/\{\{year\}\}/g, format(now, "yyyy"));
446 result = result.replace(/\{\{month\}\}/g, format(now, "MM"));
447 result = result.replace(/\{\{day\}\}/g, format(now, "dd"));
448 result = result.replace(/\{\{hour\}\}/g, format(now, "HH"));
449 result = result.replace(/\{\{minute\}\}/g, format(now, "mm"));
450 result = result.replace(/\{\{second\}\}/g, format(now, "ss"));

Callers 1

processTemplateBodyFunction · 0.85

Calls 2

nowMethod · 0.80
toStringMethod · 0.65

Tested by

no test coverage detected