受够了 windows 下的 markdown 软件的话,自己写一个吧!

网页版的markdown 编辑器效果十分出众,比如cmd markdown、stackEdit markdown等,但问题是导出html之后就没有之前那么好的效果了,并且不能导出pdf。

客户端版的尝试较少,免费的大多是阉割版的。

比较烦人的一点是:

  1. Something

  + Something else

这样有序和无需列表经常会出现无法识别而均为有序或者均为无序的情况,于是想自己动手写一个。

 


 

分析一下的话发现,这就是一个简单的解释器而已,输入markdown 标记的语法格式,输出html文件。

 

  1. 首先,过一下w3school 的html教程,过一遍也就不到1小时吧,但确是必须的,你必须比较清楚的知道markdown文件的效果是用哪句html来表示的;

  2. 我选择了python作为实现语言,毕竟对于字符串的操作,C++显得很笨拙,而python则自如的多。

  3. 像六级标题、无需列表等只是按照行首的标记就可以唯一确定的十分简单;

  4. 而像block、有序列表则稍显麻烦,因为他们是上下文相关的,做的时候设立一个bool 变量来标记当前的状态;

  5.  而像上标、斜体、加粗、链接、删除线等和上面的是不同的,上面的都是以行为单位进行操作的,而这些是以token为 单位进行操作的,因此对他们的html代码生成也就放在了token的阶段,比如链接\[][]这样的语法比较复杂,直接匹配比较麻烦,需要模拟类似状态机的过程(其实就是不断循环来遍历),我直接用到了正则表达式去匹配,加上分组的功能会方便许多。

 

具体的实现参见 https://github.com/duangao/personal-ducument/tree/master/markdown_interpreter,里面有一个示例的markdown文件和生成的html效果文件。

 

发现bug欢迎告诉我,非常感谢。

posted @ 2014-11-28 10:26  羽加迪姆勒维奥萨  阅读(730)  评论(0编辑  收藏  举报