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 3b5965c

Browse files
Merge pull request codeisneverodd#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)

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