programming

[Codeforce Tools ] 크롬 익스텐션 개발

FAPER 2023. 8. 7. 02:51

최근 백준만 풀다가 코드포스에 입문했다.

백준도 재미있지만 코드포스의 장점은 정해진 시간에 일정 인원수를 모아서 대회 형식으로 치르는 게 기본인지라 뭔가 레이팅도 오르는 게 그래프로 보이고 긴장감도 있다.  그런데 문제는.. 내가 영어를 잘 못한다는 것이다..

어지럽다.

그래서 이걸 풀기 위해 구글 번역기에 복붙을 하면?

선생님?

 

바로 수학식에 개행이 들어가서 이렇게 복붙하면 번역이 개판이 되는 문제가 발생하는 것이다. 물론 하나씩 제거해 주면 되지만.. 대회 중에 그러고 있자니 앞으로 참가하게 될 대회마다 그럴 빠에 그냥 번역을 좀 더 편하게 해주는 익스텐션을 만들었다. 

대충 완성본

그래도 아까보단 나은 것 같다. 

 

개발 과정은 다음과 같다.

 

// Ctrl + C 조합 감지 이벤트 핸들러
function handleCopyEvent(event) {
    if (event.ctrlKey && event.key === 'c') {

        // 클립보드의 텍스트를 가져와서 개행을 제거한 후 출력
        navigator.clipboard.readText()
            .then(clipboardText => {
                let textWithoutNewlines = clipboardText.replace(/(\r\n|\r|\n)/g, " ");
                textWithoutNewlines = textWithoutNewlines.replace(".", ".\n");
                console.log("Clipboard content without newlines:", textWithoutNewlines);

                // 변경된 텍스트를 클립보드에 다시 복사
                navigator.clipboard.writeText(textWithoutNewlines)
                    .then(() => {
                        console.log("Modified content copied to clipboard.");
                    })
                    .catch(error => {
                        console.error("Error copying modified content:", error);
                    });
            })
            .catch(error => {
                console.error("Error reading clipboard content:", error);
            });
    }
}

// 키보드 이벤트 리스너 등록
document.addEventListener("keydown", handleCopyEvent);

 

이렇게 해주면 Ctrl + C 를 누르는 순간 클립보드의 내용을 일단 문자열로 가져온 다음, 개행을 모두 제거하고 다시 클립보드에 붙여넣는다.

 

그럼 코드  포스할 때 번역이 좀 더 쉽게 된다.