루비 코드라 루비 카테고리에 올리기는 했는데...-_-;;

@ 구글 하이라이트 들어내고 CodePad 로 코드 하이라이트 적용함

블로그의 구글 하이라이트를 들어내고 codepad 에서 코드 하이라이트를 따오는 프로그램을 작성했다.
뭐... 몇몇 분들은 그냥 쓰지 뭐하러 그러냐고 하시긴 했는데, 요즘 코딩할 꺼리도 없었고 한 번 해 두면 나쁠 건 없어 보여서 독단적으로 작업했다.

프로그램 규모가 크지 않아서 codepad로 전송하고 결과 받아오는 부분만 클래스화 하고 나머지는 대충...
유닛테스트 없고 문서화도 없다. (좀 중요하다 싶은 부분에 라인주석은 달아두긴 했다.)
사실 코드가 어려울 게 없다. 그냥 몇 가지 라이브러리의 힘을 좀 빌어왔을 뿐.



하는 일에 대해 간략하게 서술하자면, 티스토리 백업파일에서 구글 하이라이트를 적용하는 태그 부분을 찾아서 언어와 코드를 추출하고, 그 정보로 codepad 에 실행 요청을 한다. 그러면 결과 페이지가 날아오는데, 거기서 코드 하이라이트 부분만 HTML 태그를 떼어서 원래 있던 태그 부분을 없애고 덮어써버린다. 모든 태그 부분에 처리를 완료하면 파일로 저장한다.
(실제 구현은 좀 다르다. 태그 부분만 찾아서 작업하려고 했는데 생각보다 까다로운 부분이 있어서 티스토리 백업파일을 XML 파서로 메모리에 올리고 XPATH 를 이용하여 작업하였다.)

본인 블로그에 적용한 모습이다.
@ 신기한 Ruby 의 Fixnum


이전에는 구글 하이라이트를 통해 코드 하이라이트가 되던 포스트였다.
지금은 codepad 모양으로 출력된다.

ps. 자바만 되면 완벽한데... codepad 가 자바가 지원안된다... 쩝... 어쩔수 없이 Plain Text 로 넣어 주었다.
ps2. 본인 필요에 의해 만든 것이라서 C / C++ / Java / Ruby 만 대상으로 삼았다.
더 필요한 경우 convert_google_lang_code_to_codepad 메소드의 lang_google_code_to_codepad 변수에 추가해 주어야 한다.
혹시 pre 태그를 적용한 언어가 있다면 '반드시' 넣어 주어야 한다. 현재 코드패드에서 오류 페이지를 넘기는 경우에 대해서는 처리하고 있지 않기 때문이다.
ps3. 실행하려면 hpricot 과 htmlentities 를 gem 으로 설치하여야 한다.
ps4. 7월 토익 열흘도 안남았는데 이게 뭐하는 짓인지 모르겠다 -_-;;
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Heart