코드보기 : https://github.com/maplesyrup0423/DevTyper
##코드 패턴 추가
기존 코드의 경우 함수만 타자연습 대상으로 삼았지만, 더욱 다양한 코드에 익숙해지기 위해 코드패턴 추가
// 정규 표현식 패턴 정의
const regexPatterns = {
function: /function\s+\w+\s*\(.*?\)\s*{[^}]*}/g,
class: /class\s+\w+\s*{[^}]*}/g,
arrow: /\w+\s*=\s*\(.*?\)\s*=>\s*{[^}]*}/g,
async: /async\s+function\s+\w+\s*\(.*?\)\s*{[^}]*}/g,
loop: /\b(for|while)\s*\(.*?\)\s*{[^}]*}/g,
conditional: /\b(if|switch)\s*\(.*?\)\s*{[^}]*}/g,
object: /const\s+\w+\s*=\s*{[^}]*}/g,
};
// 모든 패턴을 적용하여 코드 조각을 가져옴
let allMatches = [];
for (const pattern of Object.values(regexPatterns)) {
const matches = decodedContent.match(pattern) || [];
allMatches = allMatches.concat(matches);
}
if (allMatches.length > 0) {
// 랜덤으로 하나의 코드 조각 선택
const randomSnippet =
allMatches[Math.floor(Math.random() * allMatches.length)];
setCodeToType(randomSnippet); // 선택한 코드 조각 설정
setFileLink(item.html_url); // 파일 출처 링크 설정
} else {
console.log("파일에 코드 조각이 없습니다. 다시 시도합니다.");
fetchJSFilesFromGithub(); // 코드 조각이 없으면 다시 파일을 가져옵니다.
}