1 回答

TA貢獻1966條經驗 獲得超4個贊
似乎對將 Markdown 呈現為 HTML 更感興趣
這是對的。這就是 Markdown 解析器所做的;將 Markdown 轉換為 HTML。
然而,Markdown 解析器的一個子集是通過兩步過程實現的,其中第一步將 Markdown 解析為抽象語法樹 (AST),第二步將該 AST 呈現為 HTML。通常,第二步可以用可以輸出不同格式的替代渲染器代替。如果存在 Markdown 渲染器,則可以從 AST 輸出 Markdown。執行此操作的一些實現包括 mistune (Python) 和 marked (JavaScript),等等。但是,AFAIK 都沒有附帶 Markdown 渲染器,因此您需要尋找第三方渲染器或構建自己的渲染器。
假設存在第三方 Markdown 渲染器,您可以將其子類化并覆蓋相關部分。例如。使用 mistune,你可以定制一個理論上的 Markdown 渲染器來改變圖像元素,如下所示:
from somelib import MdRenderer
class CustomRenderer(MdRenderer):
def image(self, src, alt="", title=None):
src = get_link(src)
return super().image(self, src, alt, title)
請注意,圖像src是由函數修改的get_link。您將需要創建該函數或可能進行內聯修改。您還需要根據找到的庫調整導入語句。
要使用您的自定義渲染器,請執行以下操作:
markdown = mistune.create_markdown(renderer=CustomRenderer())
output = markdown(input)
如果你要創建自己的 Markdown 渲染器,它可能看起來像這樣:
from mistune.renderers import BaseRenderer
class MdRenderer(BaseRenderer):
NAME = 'md'
# other elements defined here
def image(self, src, alt="", title=""):
src = get_link(src)
if title:
title = f' "{title}"'
return f''
# other elements defined here
當然,您需要為 Markdown 文檔中的每種元素定義方法。
請注意,我在示例中使用了 Python f 字符串,這需要更新版本的 Python。如果使用舊版本,您可能需要進行調整。
添加回答
舉報