feat(filetree): sort filetree recursively

This commit is contained in:
Luke-zhang-04 2023-01-21 13:03:51 -05:00
parent 9062a9cef6
commit 3f9e9ab7a0
No known key found for this signature in database
GPG Key ID: E57582AC6B3FF877

View File

@ -2,12 +2,9 @@ const fsFileTree = require("fs-file-tree");
const matter = require('gray-matter'); const matter = require('gray-matter');
const fs = require('fs'); const fs = require('fs');
module.exports = async () => { const sortTree = (unsorted) => {
const tree = await fsFileTree("src/site/notes");
populateWithPermalink(tree);
//Sort by folder before file, then by name //Sort by folder before file, then by name
const orderedTree = Object.keys(tree).sort((a,b)=>{ const orderedTree = Object.keys(unsorted).sort((a,b)=>{
if (a.indexOf(".md") > -1 && b.indexOf(".md") === -1){ if (a.indexOf(".md") > -1 && b.indexOf(".md") === -1){
return 1; return 1;
} }
@ -16,21 +13,36 @@ module.exports = async () => {
return -1; return -1;
} }
if(a>b){ if (a.toLowerCase() > b.toLowerCase()){
return 1; return 1;
} }
return -1; return -1;
}).reduce( }).reduce(
(obj, key) => { (obj, key) => {
obj[key] = tree[key]; obj[key] = unsorted[key];
return obj; return obj;
}, },
{} {}
); );
for (const key of Object.keys(orderedTree)) {
if (!orderedTree[key].path) {
orderedTree[key] = sortTree(orderedTree[key])
}
}
return orderedTree; return orderedTree;
} }
module.exports = async () => {
const tree = await fsFileTree("src/site/notes");
populateWithPermalink(tree);
return sortTree(tree);
}
function getPermalinkAndName(path, key) { function getPermalinkAndName(path, key) {
let permalink = "/" let permalink = "/"
let name = key.replace(".md", ""); let name = key.replace(".md", "");