From cd1879944aebc2d251be387c71ef7e459ddca3f9 Mon Sep 17 00:00:00 2001 From: Dimitri Date: Thu, 13 Jun 2019 19:30:36 +0200 Subject: [PATCH 1/3] Bugfix: also accounting for index.md files --- utils.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/utils.js b/utils.js index 9abcfe4..a76f1a9 100644 --- a/utils.js +++ b/utils.js @@ -12,11 +12,15 @@ class SidebarUtils { return title; }; + isIndexFile(file) { + return file === 'README.md' || file === 'index.md'; + } + // 対象ディレクトリ配下のファイルを取得 getFilepaths(files, targetdir) { return files.map((file) => { // 子ディレクトリ配下にREADME.mdが存在する場合は子ディレクトリのパスとする。 - if (file === 'README.md') { + if (this.isIndexFile(file)) { // README.mdの場合は子ディレクトリ直下のパスとする。 //return targetdir; return path.join(targetdir); @@ -40,7 +44,7 @@ class SidebarUtils { //return fs.readdirSync(workingdir + "/" + targetdir).map((file) => { return fs.readdirSync(path.join(workingdir, targetdir)).map((file) => { // 子ディレクトリ配下にREADME.mdが存在する場合は子ディレクトリのパスとする。 - if (file === 'README.md') { + if (this.isIndexFile(file)) { // README.mdの場合は子ディレクトリ直下のパスとする。 //return "/" + targetdir + "/" return path.join(targetdir); @@ -70,7 +74,7 @@ class SidebarUtils { // root配下のファイル&ディレクトリ一覧取得 return fs.readdirSync(workingdir).filter((file) => { //root配下のREADME.mdは'/'で表現されるので排除する。 - if (file === 'README.md') { + if (this.isIndexFile(file)) { // README.mdの場合:false return false; } From 798bdf01f189aad9104fc411aa9211a1dd6ddf6d Mon Sep 17 00:00:00 2001 From: Dimitri Date: Fri, 14 Jun 2019 01:49:16 +0200 Subject: [PATCH 2/3] made index file always appear first in sidebar --- utils.js | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/utils.js b/utils.js index a76f1a9..df0fb54 100644 --- a/utils.js +++ b/utils.js @@ -12,23 +12,42 @@ class SidebarUtils { return title; }; + // returns true exactly when the file is the index file isIndexFile(file) { return file === 'README.md' || file === 'index.md'; } - // 対象ディレクトリ配下のファイルを取得 - getFilepaths(files, targetdir) { - return files.map((file) => { - // 子ディレクトリ配下にREADME.mdが存在する場合は子ディレクトリのパスとする。 + // utility function for mapping and ordering files + // the order being: index file first (see above), everything else alphabetically + mapFiles(files, targetdir) { + let indexFile; + const mappedFiles = files + .filter((file) => { + // skip the index file in order to add it afterwards if (this.isIndexFile(file)) { - // README.mdの場合は子ディレクトリ直下のパスとする。 - //return targetdir; - return path.join(targetdir); + // save the index file + indexFile = path.join(targetdir); + // file is the index file, therefore skip it + return false; + } else { + // file is not the index file, therefore add it to the filtered list + return true; } + }) + .map((file) => { // README.md以外の場合は子ディレクトリ+ファイル名を返す。 - //return targetdir + file; + //return "/" + targetdir + "/" + file; return path.join(targetdir, file); - }); + }) + // add the index file as the first item and return the result + mappedFiles.splice(0, 0, indexFile); + return mappedFiles; + } + + // 対象ディレクトリ配下のファイルを取得 + getFilepaths(files, targetdir) { + // map files to sidebar elements + return this.mapFiles(files, targetdir); }; getFiles (workingdir, targetpath) { @@ -41,18 +60,8 @@ class SidebarUtils { // 対象ディレクトリ配下のファイルを取得 getFileitems(workingdir, targetdir) { - //return fs.readdirSync(workingdir + "/" + targetdir).map((file) => { - return fs.readdirSync(path.join(workingdir, targetdir)).map((file) => { - // 子ディレクトリ配下にREADME.mdが存在する場合は子ディレクトリのパスとする。 - if (this.isIndexFile(file)) { - // README.mdの場合は子ディレクトリ直下のパスとする。 - //return "/" + targetdir + "/" - return path.join(targetdir); - } - // README.md以外の場合は子ディレクトリ+ファイル名を返す。 - //return "/" + targetdir + "/" + file; - return path.join(targetdir, file); - }) + // map files to sidebar elements + return this.mapFiles(fs.readdirSync(path.join(workingdir, targetdir))); }; // ディレクトリ一覧の取得 getDirectores (workingdir) { From d75847b84bd83009b0c7cd5f8e72b8c28bf92cc5 Mon Sep 17 00:00:00 2001 From: Dimitri Date: Fri, 14 Jun 2019 02:01:25 +0200 Subject: [PATCH 3/3] minor fix --- utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.js b/utils.js index df0fb54..a8b77c7 100644 --- a/utils.js +++ b/utils.js @@ -61,7 +61,7 @@ class SidebarUtils { // 対象ディレクトリ配下のファイルを取得 getFileitems(workingdir, targetdir) { // map files to sidebar elements - return this.mapFiles(fs.readdirSync(path.join(workingdir, targetdir))); + return this.mapFiles(fs.readdirSync(path.join(workingdir, targetdir)), targetdir); }; // ディレクトリ一覧の取得 getDirectores (workingdir) {