基于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 += "