diff --git a/src/site/_data/filetree.js b/src/site/_data/filetree.js index 27735b0..ccb26fc 100644 --- a/src/site/_data/filetree.js +++ b/src/site/_data/filetree.js @@ -5,29 +5,41 @@ const fs = require('fs'); module.exports = async () => { const tree = await fsFileTree("src/site/notes"); populateWithPermalink(tree); - + + return sortTree(tree); +} + +const sortTree = (unsorted) => { //Sort by folder before file, then by name - const orderedTree = Object.keys(tree).sort((a,b)=>{ - if(a.indexOf(".md") > -1 && b.indexOf(".md") === -1){ + const orderedTree = Object.keys(unsorted).sort((a, b) => { + if (a.indexOf(".md") > -1 && b.indexOf(".md") === -1) { return 1; } - if(a.indexOf(".md") === -1 && b.indexOf(".md") > -1){ + if (a.indexOf(".md") === -1 && b.indexOf(".md") > -1) { return -1; } - if(a>b){ + if (a.toLowerCase() > b.toLowerCase()) { return 1; } return -1; }).reduce( (obj, key) => { - obj[key] = tree[key]; + obj[key] = unsorted[key]; + return obj; }, {} ); + + for (const key of Object.keys(orderedTree)) { + if (!orderedTree[key].path) { + orderedTree[key] = sortTree(orderedTree[key]) + } + } + return orderedTree; } @@ -40,14 +52,14 @@ function getPermalinkAndName(path, key) { if (frontMatter.data.permalink) { permalink = frontMatter.data.permalink; } - if (frontMatter.data.title){ + if (frontMatter.data.title) { name = frontMatter.data.title } } catch { //ignore } - return {permalink, name}; + return { permalink, name }; } function populateWithPermalink(tree) {