slidev-addon-sm
Version:
slidev-addon slidev sm
103 lines (88 loc) • 3.04 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);
}