HyperDown:一個結構清晰,易於維護,現代的 Markdown 解析器

為何要寫這樣一個解析器

Markdown 已經面世許多年了,國內外許多大大小小的網站都在用它,但是它的解析器卻依然混亂不堪。SegmentFault 是中國較大規模使用 Markdown 語法的網站,我們一直在使用一些開源類庫,包括但不限於

  • php-markdown

  • CommonMark for PHP

  • Parsedown

他們都有或多或少的毛病,有的性能較差,有的代碼比較業餘,更多的情況是由於 Markdown 本身解析比較複雜,因此我們幾乎無法去維護另外一個人寫的代碼。基於這個原因,我為 SegmentFault 專門編寫了這麼一個 Markdown 解析器。

PHP 版 Hyperdown

使用方法

與常規的解析類庫沒有任何區別

$parser = new HyperDownParser;n$html = $parser->makeHtml($text);n

當前支持的語法

  • 標題

  • 列表(可遞歸)

  • 引用(可遞歸)

  • 縮進風格的代碼塊

  • Github風格的代碼塊

  • 各種行內文字加粗,斜體等效果

  • 鏈接,圖片

  • 自動鏈接

  • 段內折行

  • 腳標

  • 分隔符

  • 表格

  • 即將支持的語法

即將支持的語法

圖片和鏈接支持互相套用

瀏覽器中使用請參閱 HyperDown.js

HyperDown.js

接下來介紹的是 js 版本 HyperDown (使用 CoffeeScript 實現)

使用方法

nodejs 中使用

安裝

npm install hyperdownn

使用

HyperDown = require(hyperdown);nnvar parser = new HyperDown,n html = parser.makeHtml(markdownText);n

瀏覽器中使用

直接引用 Parser.js 即可

<script src="yourpath/hyperdown/Parser.js"></script>n<script>nvar parser = new HyperDown,n html = parser.makeHtml(markdownText); n</script>n

單元測試

npm testn

github.com/SegmentFault


推薦閱讀:

一鍵!將 Word 轉換為 Markdown
Markdown 入門
認識與入門 Markdown
學會優雅實用的 Markdown 寫作,從這篇文章開始吧 | 有用功
為什麼markdown編輯器Mou這麼受歡迎?

TAG:Markdown | SegmentFault |