Generate /api/ sidebar
This commit is contained in:
parent
1acbe66ba3
commit
8b039b3cd7
2 changed files with 47 additions and 0 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
lang: "en-US",
|
lang: "en-US",
|
||||||
title: 'Profectus',
|
title: 'Profectus',
|
||||||
|
@ -62,6 +64,43 @@ module.exports = {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"/api/": generateAPISidebar()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function generateAPISidebar() {
|
||||||
|
const modules = fs.readdirSync("./api/modules").map(file => file.substr(0, file.length - 3));
|
||||||
|
const folders = {};
|
||||||
|
modules.forEach(file => {
|
||||||
|
// Split by _, but not break_eternity
|
||||||
|
const pieces = file.replace("break_eternity", "break~eternity").split(/_/).map(piece => piece === "break~eternity" ? "break_eternity" : piece);
|
||||||
|
const lineItem = { text: camelToTitle(pieces[pieces.length - 1]), link: `/api/modules/${file}` };
|
||||||
|
pieces.slice(0, pieces.length - 1).reduce((acc, curr) => {
|
||||||
|
// console.log(acc, curr);
|
||||||
|
if (!acc[curr]) {
|
||||||
|
acc[curr] = { text: camelToTitle(curr), children: [] };
|
||||||
|
}
|
||||||
|
return acc[curr].children;
|
||||||
|
}, folders).push(lineItem);
|
||||||
|
});
|
||||||
|
return processFolders(folders);
|
||||||
|
}
|
||||||
|
|
||||||
|
function camelToTitle(camel) {
|
||||||
|
if (camel === "break_eternity") {
|
||||||
|
return "Break Eternity";
|
||||||
|
}
|
||||||
|
let title = camel.replace(/([A-Z])/g, " $1");
|
||||||
|
title = title.charAt(0).toUpperCase() + title.slice(1);
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
function processFolders(folders) {
|
||||||
|
return Object.values(folders).map(folder => {
|
||||||
|
if (folder.children) {
|
||||||
|
folder.children = processFolders(folder.children);
|
||||||
|
}
|
||||||
|
return folder;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -14,3 +14,11 @@
|
||||||
tr:nth-child(2n) {
|
tr:nth-child(2n) {
|
||||||
background-color: var(--code-bg-color);
|
background-color: var(--code-bg-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sidebar > .sidebar-links > .sidebar-link > .sidebar-links > .sidebar-link > .sidebar-links > .sidebar-link > .sidebar-links > .sidebar-link > .sidebar-links > .sidebar-link > .sidebar-link-item {
|
||||||
|
display: block;
|
||||||
|
padding: 0.3rem 1.5rem 0.3rem 5rem;
|
||||||
|
line-height: 1.4;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue