루비 코드라 루비 카테고리에 올리기는 했는데...-_-;;
블로그의 구글 하이라이트를 들어내고 codepad 에서 코드 하이라이트를 따오는 프로그램을 작성했다.
뭐... 몇몇 분들은 그냥 쓰지 뭐하러 그러냐고 하시긴 했는데, 요즘 코딩할 꺼리도 없었고 한 번 해 두면 나쁠 건 없어 보여서 독단적으로 작업했다.
프로그램 규모가 크지 않아서 codepad로 전송하고 결과 받아오는 부분만 클래스화 하고 나머지는 대충...
유닛테스트 없고 문서화도 없다. (좀 중요하다 싶은 부분에 라인주석은 달아두긴 했다.)
사실 코드가 어려울 게 없다. 그냥 몇 가지 라이브러리의 힘을 좀 빌어왔을 뿐.
하는 일에 대해 간략하게 서술하자면, 티스토리 백업파일에서 구글 하이라이트를 적용하는 태그 부분을 찾아서 언어와 코드를 추출하고, 그 정보로 codepad 에 실행 요청을 한다. 그러면 결과 페이지가 날아오는데, 거기서 코드 하이라이트 부분만 HTML 태그를 떼어서 원래 있던 태그 부분을 없애고 덮어써버린다. 모든 태그 부분에 처리를 완료하면 파일로 저장한다.
(실제 구현은 좀 다르다. 태그 부분만 찾아서 작업하려고 했는데 생각보다 까다로운 부분이 있어서 티스토리 백업파일을 XML 파서로 메모리에 올리고 XPATH 를 이용하여 작업하였다.)
본인 블로그에 적용한 모습이다.
이전에는 구글 하이라이트를 통해 코드 하이라이트가 되던 포스트였다.
지금은 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월 토익 열흘도 안남았는데 이게 뭐하는 짓인지 모르겠다 -_-;;
@ 구글 하이라이트 들어내고 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월 토익 열흘도 안남았는데 이게 뭐하는 짓인지 모르겠다 -_-;;
'Dev.Programming > Lang.Ruby' 카테고리의 다른 글
| 티스토리 백업에서 구글 하이라이트 들어내고 CodePad 로 코드 하이라이트 적용 프로그램 (0) | 2009/07/17 |
|---|---|
| 루비 프로젝트에 CI 적용 (2) | 2009/04/25 |
| CruiseControl.rb(1.3.0) 를 윈도우에서 사용할 경우 (0) | 2009/04/25 |
| RDoc vol.4 from 곡괭이 (RDoc::usage) (4) | 2009/04/23 |
| RDoc vol.3 from 곡괭이 (0) | 2009/04/23 |
| RDoc vol.2 from 곡괭이 (0) | 2009/04/23 |

codepad_sender.rb

