Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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) |
File renamed without changes.

‎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)

AltStyle によって変換されたページ (->オリジナル) /