vitepress-theme-nex
Version:
VitePress 主题 Nex 是一个 VitePress 用户设计的现代化博客主题。它不仅提供了简洁美观的视觉风格,还具有多种实用的功能,帮助您快速构建高质量的博客页面。
50 lines (49 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NTransform = NTransform;
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"
})
};
}