Skip to content

Commit 8e1fbe9

Browse files
authored
Merge branch 'main' into soulhn-patch-1
2 parents 970479b + 9b1b9f4 commit 8e1fbe9

File tree

4 files changed

+82
-37
lines changed

4 files changed

+82
-37
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
| 23 | [성격 유형 검사하기](https://school.programmers.co.kr/learn/courses/30/lessons/118666) | [성격 유형 검사하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/성격-유형-검사하기&118666&.js) |
5757
| 24 | [소수 만들기](https://school.programmers.co.kr/learn/courses/30/lessons/12977) | [소수 만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/소수-만들기&12977&.js) |
5858
| 25 | [소수 찾기](https://school.programmers.co.kr/learn/courses/30/lessons/42839) | [소수 찾기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/소수-찾기&42839&.js) |
59-
| 26 | [수박수박수박수박수박수?](https://school.programmers.co.kr/learn/courses/30/lessons/12922) | [수박수박수박수박수박수?.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/수박수박수박수박수박수?&12922&.js) |
59+
| 26 | [수박수박수박수박수박수?](https://school.programmers.co.kr/learn/courses/30/lessons/12922) | [수박수박수박수박수박수?.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/수박수박수박수박수박수?&12922&.js) |
6060
| 27 | [숫자 문자열과 영단어](https://school.programmers.co.kr/learn/courses/30/lessons/81301) | [숫자 문자열과 영단어.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/숫자-문자열과-영단어&81301&.js) |
6161
| 28 | [시저 암호](https://school.programmers.co.kr/learn/courses/30/lessons/12926) | [시저 암호.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/시저-암호&12926&.js) |
6262
| 29 | [신고 결과 받기](https://school.programmers.co.kr/learn/courses/30/lessons/92334) | [신고 결과 받기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/신고-결과-받기&92334&.js) |

utils/api.js

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,44 @@ const splitCodeToSolutions = code => {
55
return [solutions[0], ...solutions.slice(1).map(solution => '//' + solution)];
66
};
77

8-
export const generateAPI = () => {
9-
try {
10-
const api = [1, 2, 3, 4, 5].flatMap(level =>
11-
fs
12-
.readdirSync(`level-${level}`)
13-
.filter(name => name !== '00-해답-예시.js')
14-
.map(file => {
15-
const [name, id, extension] = file.split('&');
16-
const code = splitCodeToSolutions(fs.readFileSync(`level-${level}/${file}`, 'utf-8'));
17-
return {
18-
id,
19-
name: name.replaceAll('-', ' '),
20-
fileName: file,
21-
level,
22-
code: code[0] + code[1],
23-
link: `https://school.programmers.co.kr/learn/courses/30/lessons/${id}`,
24-
};
25-
})
26-
);
27-
fs.writeFileSync('api.json', JSON.stringify(api));
28-
return api;
29-
} catch (e) {
30-
console.log('Making API ERROR: ' + e);
31-
return [];
32-
}
33-
};
8+
export const generateAPI = (() => {
9+
const formatName = (() => {
10+
const nameExceptions = [
11+
['-', ' '],
12+
['?', '?'],
13+
];
14+
15+
return name => {
16+
nameExceptions.forEach(([a, b]) => (name = name.replaceAll(a, b)));
17+
return name;
18+
};
19+
})();
20+
21+
return () => {
22+
try {
23+
const api = [1, 2, 3, 4, 5].flatMap(level =>
24+
fs
25+
.readdirSync(`level-${level}`)
26+
.filter(name => name !== '00-해답-예시.js')
27+
.map(fileName => {
28+
const [name, id, extension] = formatName(fileName).split('&');
29+
console.log(formatName(fileName));
30+
const code = splitCodeToSolutions(fs.readFileSync(`level-${level}/${fileName}`, 'utf-8'));
31+
return {
32+
id,
33+
name,
34+
fileName,
35+
level,
36+
code: code[0] + code[1],
37+
link: `https://school.programmers.co.kr/learn/courses/30/lessons/${id}`,
38+
};
39+
})
40+
);
41+
fs.writeFileSync('api.json', JSON.stringify(api));
42+
return api;
43+
} catch (e) {
44+
console.log('Making API ERROR: ' + e);
45+
return [];
46+
}
47+
};
48+
})();

utils/rename.js

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,52 @@
11
import fetchTitleLink from './fetch.js';
22
import fs from 'fs';
3+
const possibleLevels = [1, 2, 3, 4, 5];
4+
const nameExceptions = [
5+
[' ', '-'],
6+
['?', '?'],
7+
];
8+
const renameFileNamesWithID = (() => {
9+
const formatName = name => {
10+
nameExceptions.forEach(([a, b]) => (name = name.replaceAll(a, b)));
11+
return name;
12+
};
313

4-
const renameFileNamesWithID = lessons => {
5-
const possibleLevels = [1, 2, 3, 4, 5];
14+
return lessons => {
15+
possibleLevels.forEach(level => {
16+
const files = fs.readdirSync(`level-${level}`);
17+
18+
Object.entries(lessons).forEach(([title, link]) => {
19+
const id = link.split('/').at(-1);
20+
const oldName = formatName(title) + '.js';
21+
const newName = `${formatName(title)}&${id}&.js`;
22+
23+
if (files.includes(oldName) && !files.includes(newName)) {
24+
fs.renameSync(`level-${level}/${oldName}`, `level-${level}/${newName}`, err => {
25+
console.log(err);
26+
});
27+
}
28+
});
29+
});
30+
};
31+
})();
32+
33+
const renameInvalid = () => {
634
possibleLevels.forEach(level => {
735
const files = fs.readdirSync(`level-${level}`);
8-
Object.entries(lessons).forEach(([title, link]) => {
9-
const id = link.split('/').at(-1);
10-
const oldFileName = title.split(' ').join('-') + '.js';
11-
const newFileName = `${title.split(' ').join('-')}&${id}&.js`;
12-
if (files.includes(oldFileName) && !files.includes(newFileName)) {
13-
fs.renameSync(`level-${level}/${oldFileName}`, `level-${level}/${newFileName}`, err => {
14-
console.log(err);
36+
37+
nameExceptions.forEach(e => {
38+
files
39+
.filter(name => name.includes(e[0]))
40+
.forEach(name => {
41+
fs.renameSync(`level-${level}/${name}`, `level-${level}/${name.replace(e[0], e[1])}`, err => {
42+
console.log(err);
43+
});
1544
});
16-
}
1745
});
1846
});
1947
};
2048

2149
const titleLinkObject = await fetchTitleLink();
50+
2251
renameFileNamesWithID(titleLinkObject);
52+
renameInvalid();

0 commit comments

Comments
 (0)