<%* // Busca todos os arquivos na pasta blog const blogFolder = "Blog"; const files = app.vault.getMarkdownFiles() .filter(file => file.path.startsWith(blogFolder));
// Função para obter a data personalizada de um arquivo async function getCustomDate(file) { const content = await app.vault.read(file); // Busca a propriedade 'date:' no frontmatter const dateMatch = content.match(/date:\s*(\d{4}-\d{2}-\d{2})/); if (dateMatch && dateMatch[1]) { return dateMatch[1]; } // Retorna a data de criação do arquivo se não encontrar a data personalizada return new Date(file.stat.ctime).toISOString().slice(0, 10); }
// Formata a data para formato brasileiro
function formatDate(dateStr) {
const parts = dateStr.split('-');
return ${parts[2]}/${parts[1]}/${parts[0]}
;
}
// Organiza os arquivos por data let postsWithDates = []; for (const file of files) { const date = await getCustomDate(file); postsWithDates.push({ file: file, date: date, year: date.split('-')[0] // Extrai o ano da data }); }
// Ordena do mais recente para o mais antigo postsWithDates.sort((a, b) => b.date.localeCompare(a.date));
// Agrupa os posts por ano const postsByYear = {}; for (const post of postsWithDates) { if (!postsByYear[post.year]) { postsByYear[post.year] = []; } postsByYear[post.year].push(post); }
// Obtém os anos em ordem decrescente const years = Object.keys(postsByYear).sort((a, b) => b.localeCompare(a));
// Gera o conteúdo agrupado por ano
let content = "";
for (const year of years) {
content += ## ${year}\n\n
;
content += "| Data | Título |\n| —- | —— |\n";
for (const post of postsByYear[year]) {
const formattedDate = formatDate(post.date);
const fileName = post.file.basename;
content += | ${formattedDate} | [[${fileName}]] |\n
;
}
content += "\n"; // Adiciona uma linha em branco entre os anos }
tR += content; %>