slidev-addon-sm
Version:
slidev-addon slidev sm
103 lines (88 loc) • 3.03 kB
JavaScript
import { link } from "fs";
import { $, cd, fs, path } from "zx";
const PAGE_DIR = "./pages";
const baseName = (name) => {
let t = name.split("-");
if (t.length > 1) return t[1];
return name;
};
try {
//检索pages下的md文件,并以序号排序
let subDirs = fs.readdirSync(PAGE_DIR);
subDirs.forEach((subDir) => {
let subDirPath = PAGE_DIR + "/" + subDir;
let subFiles = fs
.readdirSync(subDirPath)
.filter((t) => path.extname(t) === ".md");
subFiles.forEach((subFile) => {
let subFileName = subFile.toString();
if (subFileName === "README.md") return;
if (subFileName.includes("_publish.md")) return;
if (subFileName.includes("作业")) return;
if (subFileName.includes("小测")) return;
let found = false;
let idx = 1;
let dataArray = new Array();
let firstLine = true;
let hadlayout = false;
let filePath = subDirPath + "/" + subFileName;
let orderData = fs.readFileSync(filePath);
orderData
.toString()
.split("\n")
.forEach((data) => {
let dataStr = data.toString().trim();
// 每页的头也加上
if (firstLine) {
if (dataStr.trim().length == 0) {
return;
}
if (!dataStr.trim().slice(0, 3).includes("---")) {
dataArray[idx++] = "---";
dataArray[idx++] = "layout: SmLogoTRLayout";
dataArray[idx++] = "---\n";
let subFileBaseName = baseName(subFileName);
subFileBaseName = subFileBaseName.replace(".md", "");
if (!dataStr.includes("##")) {
dataArray[idx++] = "## " + subFileBaseName + "\n";
dataArray[idx++] = '<Toc maxDepth="3" minDepth="3"/>\n';
}
dataArray[idx++] = dataStr;
firstLine = false;
return;
}
firstLine = false;
}
if (found) {
if (!dataStr.includes("layout") && !hadlayout) {
dataArray[idx++] = "layout: SmLogoTRLayout";
dataArray[idx++] = "---\n";
found = false;
hadlayout = false;
return;
} else {
if (dataStr.includes("layout")) {
hadlayout = true;
}
dataArray[idx++] = dataStr;
if (dataStr.slice(0, 3).includes("---")) {
found = false;
hadlayout = false;
}
}
return;
}
if (dataStr.slice(0, 3).includes("---")) {
dataArray[idx++] = dataStr;
found = true;
} else {
dataArray[idx++] = dataStr;
}
});
fs.writeFileSync(filePath, dataArray.join("\n").trim());
});
});
} catch (err) {
console.error(err);
}