The-Last-Algorithms-Course-.../scripts/v1
2022-06-22 21:52:42 -06:00

70 lines
1.5 KiB
JavaScript
Executable file

#!/usr/bin/env node
const fs = require("fs");
const path = require("path");
const src_path = path.join(__dirname, "..", "src");
let day = 1;
try {
day = +fs.readdirSync(src_path).
filter(i => i.includes("day")).
sort((a, b) => {
return +b.substring(3) - a.substring(3);
})[0].substring(3) + 1;
if (isNaN(day)) {
console.log("day is nan");
day = 1;
}
} catch (e) {
console.log("error", e.message);
console.log("day is 1");
day = 1;
}
const day_path = path.join(src_path, `day${day}`);
try { fs.unlinkSync(day_path); } catch (e) { }
try { fs.mkdirSync(day_path); } catch (e) { }
function create_class(item) {
fs.writeFileSync(path.join(day_path, item.name), `export default class ${item.class} {
constructor() {
}
}`);
}
function create_function(item) {
fs.writeFileSync(path.join(day_path, item.name), `export default function ${item.fn}(${item.args}): ${item.return} {
}`);
}
[{
name: "single-linked-list.ts",
class: "LinkedList",
}, {
name: "doubly-linked-list.ts",
class: "LinkedList",
}, {
name: "array-list.ts",
class: "ArrayList",
}, {
name: "queue.ts",
class: "Queue",
}, {
name: "stack.ts",
class: "Stack",
}].forEach(c => create_class(c));
[{
name: "insertion-sort.ts",
fn: "insertion_sort",
args: "arr: number[]",
"return": "void",
}, {
name: "merge-sort.ts",
fn: "merge_sort",
args: "arr: number[]",
"return": "void",
}].forEach(f => create_function(f));