in library/markdown-parser/handlers/article.ts [31:78]
export function processArticles(profiles: Profile[]): ResolvedArticle[] {
if (fs.existsSync(articleDist)) {
fs.rmSync(articleDist, { force: true, recursive: true });
}
mkdirSync(articleDist, { recursive: true });
let articles: ResolvedArticle[] = [];
let preArticle: Partial<ResolvedArticle>;
if (!fs.existsSync(articleSource)) {
mkdirSync(articleSource, { recursive: true });
}
readdirSync(articleSource).forEach(file => {
const { name } = parseFileName(file);
const article = parseArticleFromBuffer(name, readFileSync(`${articleSource}/${name}.md`));
const resolvedArticle = resolveArticle(article, profiles);
articles.push(resolvedArticle);
});
articles = articles
.sort((a, b) => {
if (a.date && b.date) {
return isAfter(a.date, b.date) ? -1 : 1;
} else {
return 0;
}
})
.reduce((pre, cur, index) => {
const resolvedSimpleArticle = { id: cur.id, name: cur.name };
cur.pre = preArticle;
preArticle = resolvedSimpleArticle;
if (index > 0) {
pre[index - 1].next = resolvedSimpleArticle;
}
pre.push(cur);
return pre;
}, []);
articles.forEach(article => {
writeFileSync(`${articleDist}/${article.id}.json`, JSON.stringify(article));
});
const briefArticleList = buildBriefArticleList(articles);
writeFileSync(`${articleDist}/list.json`, JSON.stringify(briefArticleList));
return articles;
}