````
```dataviewjs
const folderPath = "Adventures/Example Adventure/Session Notes";
const extractTakeaways = (content, startHeader, endHeader) => {
const startPattern = new RegExp(`^#+\\s*${startHeader}\\s*`, "im");
const endPattern = new RegExp(`^#+\\s*${endHeader}\\s*`, "im");
const startMatch = content.match(startPattern);
const endMatch = content.match(endPattern);
if (!startMatch) return null;
const startIndex = startMatch.index + startMatch[0].length;
const endIndex = endMatch ? endMatch.index : content.length;
return content.slice(startIndex, endIndex).replace(/^(#+.*|Notes last touched.*)$/gim, "").trim() || null;
};
(async () => {
let tableData = await Promise.all(dv.pages(`"${folderPath}"`)
.map(async page => {
const content = await dv.io.load(page.file.path);
const takeaway = content ? extractTakeaways(content, "Takeaways", "Next Session") : null;
return takeaway ? [page.file.name, takeaway] : null;
}));
tableData = tableData.filter(row => row !== null);
tableData.sort((a, b) => {
const sessionNumberA = parseInt(a[0].match(/Session (\d+)/)?.[1] || 0, 10);
const sessionNumberB = parseInt(b[0].match(/Session (\d+)/)?.[1] || 0, 10);
return sessionNumberB - sessionNumberA;
});
// Slice to get the latest 5 entries after sorting
tableData = tableData.slice(0, 5);
if (tableData.length > 0) dv.table(["Note", "Takeaway"], tableData);
})();
```