From f6dd3826ad45953203881f49264408ad866aef64 Mon Sep 17 00:00:00 2001 From: Sahil Bansal Date: Sat, 9 May 2020 18:30:49 +0530 Subject: [PATCH 1/5] Add good_filepaths function in workflow script --- .github/workflows/script.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/script.js diff --git a/.github/workflows/script.js b/.github/workflows/script.js new file mode 100644 index 0000000000..aa29092029 --- /dev/null +++ b/.github/workflows/script.js @@ -0,0 +1,36 @@ +// requiring path and fs modules +const path = require('path'); +const fs = require('fs'); + +let URL_BASE = "https://github.com/TheAlgorithms/Javascript/blob/master"; +let g_output = []; + +let filepaths = []; +function good_filepaths(top_dir = ".") { + fs.readdir(top_dir, function(err, list) { + if (err) { + console.log(err); + return; + } + list.forEach(function(file) { + let path = top_dir + "/" + file; + if (!file.startsWith(".")) { + fs.stat(path, function(err, stat) { + if (stat && stat.isDirectory()) { + good_filepaths(path); + } else { + if (file.toLowerCase().endsWith(".js")) { + filepaths.push(path.slice(2)); + // console.log(filepaths); + } + } + }); + } + }); + }) +} + +good_filepaths(); +setTimeout(() => { + console.log(filepaths.length); +}, 1000); \ No newline at end of file From 34f658b928c05f7061ff0874bc45f0a4f6261c18 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Sat, 9 May 2020 13:01:33 +0000 Subject: [PATCH 2/5] updating DIRECTORY.md --- DIRECTORY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index dd836c996c..c51cfbddc1 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -70,8 +70,8 @@ * [CycleSort](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/CycleSort.js) * [FlashSort](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/FlashSort.js) * [GnomeSort](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/GnomeSort.js) - * [Heapsort](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/Heapsort.js) * [HeapSort](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/HeapSort.js) + * [Heapsort](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/Heapsort.js) * [InsertionSort](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/InsertionSort.js) * [MergeSort](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/MergeSort.js) * [QuickSort](https://github.com/TheAlgorithms/Javascript/blob/master/Sorts/QuickSort.js) From 337f3c2abc757c59f8119ead8d48c956cf7cfc65 Mon Sep 17 00:00:00 2001 From: Sahil Bansal Date: Sat, 9 May 2020 19:22:01 +0530 Subject: [PATCH 3/5] Add md_prefix and print_path functions --- .github/workflows/script.js | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.github/workflows/script.js b/.github/workflows/script.js index aa29092029..fd2dff8080 100644 --- a/.github/workflows/script.js +++ b/.github/workflows/script.js @@ -30,7 +30,31 @@ function good_filepaths(top_dir = ".") { }) } +function md_prefix(i) { + if (i) { + let res = ' '.repeat(i); + return res + "*"; + } else { + return "\n##" + } +} + +function print_path(old_path, new_path) { + let old_parts = old_path.split(path.sep); + let new_parts = new_path.split(path.sep); + for (let i = 0; i < new_parts.length; ++i) { + let new_part = new_parts[i]; + if (i + 1 > old_parts.len || old_parts[i] != new_part) { + if (new_part) { + g_output.push(`${md_prefix(i)} ${new_part.replace('_', ' ')}`); + // console.log(`${md_prefix(i)} ${new_part.replace('_', ' ')}`); + } + } + } + return new_path; +} + good_filepaths(); setTimeout(() => { - console.log(filepaths.length); + console.log(filepaths); }, 1000); \ No newline at end of file From b971510cc3b4abee68b40ffa36ceb7c8dedabe50 Mon Sep 17 00:00:00 2001 From: Sahil Bansal Date: Sun, 10 May 2020 11:35:25 +0530 Subject: [PATCH 4/5] Add build_directory_md --- .github/workflows/script.js | 54 ++++++++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/.github/workflows/script.js b/.github/workflows/script.js index fd2dff8080..db6b607b52 100644 --- a/.github/workflows/script.js +++ b/.github/workflows/script.js @@ -21,7 +21,6 @@ function good_filepaths(top_dir = ".") { } else { if (file.toLowerCase().endsWith(".js")) { filepaths.push(path.slice(2)); - // console.log(filepaths); } } }); @@ -47,14 +46,63 @@ function print_path(old_path, new_path) { if (i + 1 > old_parts.len || old_parts[i] != new_part) { if (new_part) { g_output.push(`${md_prefix(i)} ${new_part.replace('_', ' ')}`); - // console.log(`${md_prefix(i)} ${new_part.replace('_', ' ')}`); } } } return new_path; } +function build_directory_md(top_dir = ".") { + old_path = ""; + filepaths.sort(function(a, b) { + if (a.toLowerCase() < b.toLowerCase()) return -1; + if (a.toLowerCase() > b.toLowerCase()) return 1; + return 0; + }); + for (let filepath of filepaths) { + file = filepath.split(path.sep); + if (file.length == 1) { + filepath = ""; + filename = file[0]; + } else { + let total = file.length; + filename = file[total - 1]; + filepath = file.splice(0, total - 1).join(path.sep); + } + if (filepath != old_path) { + old_path = print_path(old_path, filepath); + } + let indent = 0; + for (let i = 0; i < filepath.length; ++i) { + if (filepath[i] == path.sep) { + ++indent; + } + } + if (filepath) { + ++indent; + } + let urls = [URL_BASE, filepath, filename]; + let url = urls.join("/").replace(" ", "%20"); + // remove extension from filename + filename = filename.split(".")[0]; + g_output.push(`${md_prefix(indent)} [${filename}](${url})`); + } + g_output = g_output.join('\n'); + return g_output; +} + good_filepaths(); setTimeout(() => { - console.log(filepaths); + // once the filepaths have been computed + build_directory_md(); + // console.log(filepaths); +}, 1000); +setTimeout(() => { + // once the g_output has been constructed, write to the file + fs.writeFile('DIRECTORY.md', g_output + '\n', (err) => { + if (err) { + console.log(err); + } + }) + // console.log(g_output); }, 1000); \ No newline at end of file From 3b03e3b41525d7a9571b0981a622c9abfdf0710f Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 10 May 2020 17:50:29 +0200 Subject: [PATCH 5/5] Rename script.js to UpdateDirectory.js --- .github/workflows/{script.js => UpdateDirectory.js} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{script.js => UpdateDirectory.js} (99%) diff --git a/.github/workflows/script.js b/.github/workflows/UpdateDirectory.js similarity index 99% rename from .github/workflows/script.js rename to .github/workflows/UpdateDirectory.js index db6b607b52..6ab4e57964 100644 --- a/.github/workflows/script.js +++ b/.github/workflows/UpdateDirectory.js @@ -105,4 +105,4 @@ setTimeout(() => { } }) // console.log(g_output); -}, 1000); \ No newline at end of file +}, 1000);