Sunday, May 19, 2024

Markdown

目前都是基於 CommonMark 上面再去增加語法或限制,疊在 CommonMark 上面新增的規格稱為 extension。

Extension 在函式庫看起來作法大概是這樣:

  1. 解析部份目前都是產生 AST 再去生成輸出,大概有兩種讓 extension 介入解析的方式:
    1. 讓 extension 實作註冊關注的字元,再去觸發解析與 AST 加工。
    2. 掃出來的 AST 整個讓 extension 實作再去解析與加工。
  2. 完成 AST 之後再進行 render 來產生輸出,看起來多半是讓 extension 註冊處理所屬 token 型別的輸出函式,在 render 時呼叫來處理生成輸出的作業。

直接從 Markdown 產生 HTML 的方式因為比較難擴充的關係,即使有機會比較快,但現在看起來比較不流行了。

Ref: