Skip to content

Commit 3b5965c

Browse files
Merge pull request #107 from codeisneverodd/hotfix/name-exception
fix: 파일이름 ? 제거 및 규칙 추가
2 parents bf55435 + d458114 commit 3b5965c

File tree

3 files changed

+81
-36
lines changed

3 files changed

+81
-36
lines changed

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)