基于tornado实现的一个markdown解析服务器
makrdown 在 mac 有个不错的图形编辑器Mou
Mou左边编辑,右边自动预览,相当巴适,可导出为html和pdf。
初学tornado,于是想到写个简单的web服务器,让浏览器来预览编写的md文件。
python有markdown,markdown2两个库,有如下区别:
- markdown2号称比markdown快,而且更接近最初perl版本的实现。
 - 两个支持的extras不同,markdown2支持wiki-table,markdown支持的是PHP Markdown Extra的table格式。
 
由于Mou支持的是PHP Markdown Extra的table格式,所以选择markdown库来实现。
安装库
$sudo pip install tornado $sudo pip install markdown
服务器根下文件组织如下:
./server.py
./css/md.css
./md/test.md
./md/test.png
需求:
- 访问http://127.0.0.1:8080/,自动罗列服务器跟下的所有md文件。
 - 以.md结尾的文件自动转换为html
 - 需要能够访问到md引用的图片
 
实现要点:
1、要启动markdown的extras支持table。
2、tornado的handle正则表达式正确处理不同类型文件。
3、注意URI解码,还原为中文。
完整代码如下:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import tornado.ioloop
import tornado.web
import markdown
import codecs
import os
import urllib
webRoot = os.path.split(os.path.realpath(__file__))[0]
class mdHandler(tornado.web.RequestHandler):
    def mdToHtml(self, path):
        output = """
"""
        input_file = codecs.open(path, "r", "utf8")
        text = input_file.read()
        html = markdown.markdown(text, ['tables'])
        output += html
        output += "