Skip to content

Instantly share code, notes, and snippets.

@zachtib
Created July 10, 2022 20:23
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zachtib/09746a632819e821b34b135255a05df7 to your computer and use it in GitHub Desktop.
Save zachtib/09746a632819e821b34b135255a05df7 to your computer and use it in GitHub Desktop.
RPG Session Notes in Obsidian+Templater
async function rpg_session (tp) {
const notePrefix = "Session";
const noteSuffix = ".md";
let title = tp.file.title
if (title.startsWith("Untitled")) {
let directory = tp.file.folder(relative = true);
let result = -1;
let resultFile = null;
console.log(`Looking for files in ${directory}`);
let listOfFiles = await app.metadataCache.vault.adapter.list(directory);
for (const filename of listOfFiles.files) {
if (filename.startsWith(directory)) {
const strippedFilename = filename.slice(directory.length + 1);
if (strippedFilename.startsWith(notePrefix) && strippedFilename.endsWith(noteSuffix)) {
let numberComponent = strippedFilename.substring(notePrefix.length + 1, strippedFilename.lastIndexOf('.'))
let number = parseInt(numberComponent);
if (number > result) {
result = number;
resultFile = filename;
}
}
}
}
if (result != -1) {
let previousSession = result;
let sessionNumber = previousSession + 1;
let fcDate = {
year: '',
month: '',
day: ''
};
await tp.file.rename(`${notePrefix} ${sessionNumber}`);
if (resultFile !== null) {
const previousNote = tp.file.find_tfile(resultFile);
const fileCache = app.metadataCache.getFileCache(previousNote);
var previousFrontmatter = fileCache?.frontmatter || {};
if ("fc-end" in previousFrontmatter) {
console.log(previousFrontmatter["fc-end"])
fcDate = previousFrontmatter["fc-end"]
} else if ("fc-date" in previousFrontmatter) {
console.log(previousFrontmatter["fc-date"])
fcDate = previousFrontmatter["fc-date"]
}
console.log(previousFrontmatter);
}
return {
number: sessionNumber,
previous: previousSession,
fcDate: fcDate,
};
} else {
let previousSession = -1;
let sessionNumber = 0;
await tp.file.rename(`${notePrefix} ${sessionNumber}`);
return {
number: sessionNumber,
previous: previousSession,
fcDate: fcDate,
};
}
}
let previousSession = -1;
let sessionNumber = 0;
return {
number: sessionNumber,
previous: previousSession,
fcDate: {
year: '',
month: '',
day: ''
}
};
}
module.exports = rpg_session;

<%* session = await tp.user.rpg_session(tp) -%>

campaign: "Waterdeep Confidential" sessionNumber: <% session.number %> date: <% tp.date.now() %> <%* if (session.fcDate !== null) { -%> fc-date: year: <% session.fcDate.year %> month: <% session.fcDate.month %> day: <% session.fcDate.day %> <%* } -%> tags: session waterdeep

<%* if (session.previous != -1) { -%>

Previously

![[Session <% session.previous %>#Summary]] <%* } -%>

Session Notes

  • <% tp.file.cursor(1) %>

Summary

  • TODO: Enter Session Summary here
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment