마크다운 변환기 - 계획

현재 서버에서는 PHP Markdown Extra을 쓰고 있고 브라우저에서는 Showdown을 쓰고 있다. 둘 사이에 미묘한 차이가 있어서 꼬멘트 (그리고 WP) 의 미리보기에서 보여진 것과 나중에 실제로 서버에 등록되는 내용에 차이가 생긴다. 그 차이가 엄청 대단한 건 아니지만 성가시다.

목표

서버와 웹브라우저에서 같은 마크다운 변환기를 쓰자.

방법

같은 마크다운 변환기를 씀으로써 이 문제를 해결하자. 즉, 하나의 언어로 짜여진 마크다운 변환기가 서버와 브라우저에서 실행될 수 있어야 한다.

  1. PHP -> JS: 기존 마크다운 변환기가 PHP로 되어 있으니 JS로의 변환기가 있으면 될 것이다. 하지만 아쉽게도 웹에서 검색되는 대부분의 것들은 '안전하지 않은' 것들로 보인다.

  2. JS로 포팅: 기존 마크다운 변환기를 JS로 포팅하면 될 것이다. 이미 누군가 했지만 이것도 안전하지는 않다.

    Possible to freeze when incomplete syntax. (in Known Issues)

    게다가 나는 JS 코딩을 하고 싶지 않다.

  3. 다른 언어로 포팅 & 다른 언어 -> JS: 다른 언어로 포팅을 하고 그 언어가 JS로 변환된다면 될 것이다. TypeScript나 Elm, C#/Bridge.net 등등을 떠올리겠지만 나는 과감히 OCaml/BuckleScript로 간다. 도전!

    내가 따로 포팅을 했을 때 생기는 걱정은 나중에 PHP Markdown Extra가 업데이트 되었을 때 이를 따라가는 데에 비용이 든다는 것이다. 하지만 최근 몇 년 간 눈에 띄는 업데이트는 보지 못했으니까 앞으로도 그러리라고 믿는다.


이것이 언제 완성될 지 모르니 일단 이 포스트는 오늘 올려서 패킷을 조금이라도 더 쓰고...

2019-08-26 씀.