feat: better class generation.
This commit is contained in:
parent
593a8d6a7f
commit
3be55dc53e
7 changed files with 63 additions and 20 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
"clearMocks": true,
|
"clearMocks": true,
|
||||||
"moduleNameMapper": {
|
"moduleNameMapper": {
|
||||||
"@code/(.*)": [
|
"@code/(.*)": [
|
||||||
"<rootDir>/src/day5/$1"
|
"<rootDir>/src/day9/$1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"preset": "ts-jest"
|
"preset": "ts-jest"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
dsa: [
|
dsa: [
|
||||||
"InsertionSort",
|
"ArrayList",
|
||||||
"MergeSort",
|
|
||||||
"Queue",
|
|
||||||
"Stack",
|
|
||||||
"QuickSort",
|
|
||||||
"DijkstraList",
|
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
19
package.json
19
package.json
|
|
@ -14,19 +14,20 @@
|
||||||
"typescript": "^4.7.4"
|
"typescript": "^4.7.4"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "jest InsertionSort MergeSort Queue Stack QuickSort DijkstraList",
|
"test": "jest ArrayList",
|
||||||
"clear": "./scripts/clear",
|
"clear": "./scripts/clear",
|
||||||
"prettier": "prettier --write ./src",
|
"prettier": "prettier --write ./src",
|
||||||
"generate": "./scripts/generate",
|
"generate": "./scripts/generate",
|
||||||
"day": "echo /home/mpaulson/personal/kata/src/day5"
|
"day": "echo /home/mpaulson/personal/kata/src/day9"
|
||||||
},
|
},
|
||||||
"kata_stats": {
|
"kata_stats": {
|
||||||
"ArrayList": 0,
|
"ArrayList": 3,
|
||||||
"DijkstraList": 4,
|
"DijkstraList": 5,
|
||||||
"InsertionSort": 3,
|
"InsertionSort": 4,
|
||||||
"MergeSort": 3,
|
"MergeSort": 4,
|
||||||
"Queue": 3,
|
"Queue": 4,
|
||||||
"Stack": 3,
|
"Stack": 4,
|
||||||
"QuickSort": 3
|
"QuickSort": 4,
|
||||||
|
"PrimsList": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2,6 +2,29 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
ArrayList: {
|
ArrayList: {
|
||||||
type: "class",
|
type: "class",
|
||||||
|
methods: [{
|
||||||
|
name: "add",
|
||||||
|
args: "item: T",
|
||||||
|
return: "void",
|
||||||
|
}, {
|
||||||
|
name: "remove",
|
||||||
|
args: "item: T",
|
||||||
|
return: "T | undefined",
|
||||||
|
}, {
|
||||||
|
name: "removeAt",
|
||||||
|
args: "idx: number",
|
||||||
|
return: "T | undefined",
|
||||||
|
}],
|
||||||
|
getters: [{
|
||||||
|
name: "length",
|
||||||
|
return: "number",
|
||||||
|
prop_name: "_length",
|
||||||
|
}],
|
||||||
|
properties: [{
|
||||||
|
name: "_length",
|
||||||
|
type: "number",
|
||||||
|
scope: "private",
|
||||||
|
}]
|
||||||
},
|
},
|
||||||
SinglyLinkedList: {
|
SinglyLinkedList: {
|
||||||
type: "class",
|
type: "class",
|
||||||
|
|
|
||||||
|
|
@ -29,11 +29,32 @@ const day_path = path.join(src_path, day_name);
|
||||||
try { fs.unlinkSync(day_path); } catch (e) { }
|
try { fs.unlinkSync(day_path); } catch (e) { }
|
||||||
try { fs.mkdirSync(day_path); } catch (e) { }
|
try { fs.mkdirSync(day_path); } catch (e) { }
|
||||||
|
|
||||||
|
function generate_method(method) {
|
||||||
|
return `${method.name}(${method.args}): ${method.return || "void"} {
|
||||||
|
|
||||||
|
}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function generate_property(prop) {
|
||||||
|
return `${prop.scope} ${prop.name}: ${prop.type};`
|
||||||
|
}
|
||||||
|
|
||||||
|
function generate_getter(getter) {
|
||||||
|
return `${getter.name}(): ${getter.return} {
|
||||||
|
return this.${getter.prop_name};
|
||||||
|
}`
|
||||||
|
}
|
||||||
|
|
||||||
function create_class(name, item) {
|
function create_class(name, item) {
|
||||||
fs.writeFileSync(path.join(day_path, `${name}.ts`), `export default class ${name}<T> {
|
fs.writeFileSync(path.join(day_path, `${name}.ts`), `export default class ${name}<T> {
|
||||||
constructor() {
|
${(item.properties || []).map(generate_property).join("\n ")}
|
||||||
|
|
||||||
|
${(item.getters || []).map(generate_getter).join("\n ")}
|
||||||
|
|
||||||
|
constructor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
${(item.methods || []).map(generate_method).join("\n ")}
|
||||||
}`);
|
}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
3
src/__tests__/RingBuffer.ts
Normal file
3
src/__tests__/RingBuffer.ts
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
"baseUrl": "src",
|
"baseUrl": "src",
|
||||||
"paths": {
|
"paths": {
|
||||||
"@code/*": [
|
"@code/*": [
|
||||||
"day5/*"
|
"day9/*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue