vitepress-theme-nex
Version:
VitePress 主题 Nex 是一个 VitePress 用户设计的现代化博客主题。它不仅提供了简洁美观的视觉风格,还具有多种实用的功能,帮助您快速构建高质量的博客页面。
41 lines (40 loc) • 1.11 kB
JavaScript
export {};
export function NTransform(raw, sort = "desc") {
return raw.map(({ url, frontmatter, html, excerpt }) => ({
title: filterTitle(html),
url,
html: filterHtml(html),
frontmatter,
excerpt: filterHtml(excerpt),
date: formatDate(frontmatter.date)
})).sort((a, b) => {
return sort === "asc" ? a.date.time - b.date.time : b.date.time - a.date.time;
});
}
function filterHtml(html) {
if (!html) return "";
return html.replace(/<h1.*?>(.*?)<\/h1>/s, "");
}
function filterTitle(html) {
if (!html) return "";
const titleRegex = /<h1.*?>(.*?)<\/h1>/s;
const match = titleRegex.exec(html);
if (!match) return "";
let innerHTML = match[1];
innerHTML = innerHTML.replace(/<[^>]*>/g, "");
innerHTML = innerHTML.replace(/​/g, "");
innerHTML = innerHTML.replace(/&[a-zA-Z0-9#]+;/g, "");
return innerHTML;
}
function formatDate(raw) {
const date = new Date(raw);
date.setUTCHours(12);
return {
time: +date,
string: date.toLocaleDateString("en-US", {
year: "numeric",
month: "long",
day: "numeric"
})
};
}