第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Markdown 解析/預(yù)處理器 - 支持增強(qiáng)/修改任意 markdown 文件

Markdown 解析/預(yù)處理器 - 支持增強(qiáng)/修改任意 markdown 文件

慕桂英546537 2022-12-20 11:29:59
我正在嘗試.md從文件系統(tǒng)中獲取文件并為基于 Vuepress 的托管做好準(zhǔn)備。為此,我想保留降價(jià)格式,調(diào)整一些文件內(nèi)容,并將其保存到一個(gè)不同名稱(chēng)的.md. 原始文件在文件系統(tǒng)上應(yīng)保持原樣,并且在工作站上應(yīng)保持可見(jiàn)。Vuepress 的構(gòu)建系統(tǒng)可以處理.md=>.html轉(zhuǎn)換,這是我想避免的一步。我看過(guò)mistune和Python-markdown,但它們似乎都對(duì)將 Markdown 呈現(xiàn)為 HTML 更感興趣,我想將這一步完全留給 Vuepress。是否有某種模式 a) 讀取 markdown b) 通過(guò)用戶(hù)插件修改它 c)將它寫(xiě)回 Markdown?非 Python 實(shí)用程序呢?我可以處理 JS 或 Ruby,盡管在任何地方都不如 Python。例如:Vuepress 使用 Frontmatter (YAML) 來(lái)限定文檔中的內(nèi)容。---title: Blogging Like a Hackerlang: en-US---我想將它們添加到文件的前面。圖片鏈接需要更新假設(shè)我在與.md文件相同的目錄中有一個(gè)圖像。Markdown 查看器可以使用下面的標(biāo)記輕松顯示。### My image:![](./02.issue.png)但是,要使 Vuepress 工作,需要發(fā)生以下事情:### My image:![](/<slug-based-name-for-md-file>/02.issue.png)slug-based-name-for-md-file.md 的唯一名稱(chēng)在哪里并且02.issue.png需要將文件復(fù)制到.vuepress/public/<slug-based-name-for-md-file>/02.issue.png.所以,我需要的是一個(gè)鉤子來(lái)處理 markdown 文檔中的每個(gè)圖像引用。我可以很容易地編寫(xiě)它,我正在尋找的是一個(gè)解析器,它告訴我降價(jià)文件中存在哪些圖像。是的,我知道找到圖像只需要幾個(gè)正則表達(dá)式,但我們確實(shí)有那些強(qiáng)大的 Markdown 解析器,所以我想知道我是否遺漏了他們文檔中的某些內(nèi)容。此外,更多嵌套的 Markdown 結(jié)構(gòu)可能不容易通過(guò)正則表達(dá)式進(jìn)行分類(lèi)。
查看完整描述

1 回答

?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

似乎對(duì)將 Markdown 呈現(xiàn)為 HTML 更感興趣


這是對(duì)的。這就是 Markdown 解析器所做的;將 Markdown 轉(zhuǎn)換為 HTML。


然而,Markdown 解析器的一個(gè)子集是通過(guò)兩步過(guò)程實(shí)現(xiàn)的,其中第一步將 Markdown 解析為抽象語(yǔ)法樹(shù) (AST),第二步將該 AST 呈現(xiàn)為 HTML。通常,第二步可以用可以輸出不同格式的替代渲染器代替。如果存在 Markdown 渲染器,則可以從 AST 輸出 Markdown。執(zhí)行此操作的一些實(shí)現(xiàn)包括 mistune (Python) 和 marked (JavaScript),等等。但是,AFAIK 都沒(méi)有附帶 Markdown 渲染器,因此您需要尋找第三方渲染器或構(gòu)建自己的渲染器。


假設(shè)存在第三方 Markdown 渲染器,您可以將其子類(lèi)化并覆蓋相關(guān)部分。例如。使用 mistune,你可以定制一個(gè)理論上的 Markdown 渲染器來(lái)改變圖像元素,如下所示:


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)

請(qǐng)注意,圖像src是由函數(shù)修改的get_link。您將需要?jiǎng)?chuàng)建該函數(shù)或可能進(jìn)行內(nèi)聯(lián)修改。您還需要根據(jù)找到的庫(kù)調(diào)整導(dǎo)入語(yǔ)句。


要使用您的自定義渲染器,請(qǐng)執(zhí)行以下操作:


markdown = mistune.create_markdown(renderer=CustomRenderer())

output = markdown(input)

如果你要?jiǎng)?chuàng)建自己的 Markdown 渲染器,它可能看起來(lái)像這樣:


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'![{alt}]({src}{title})'


    # other elements defined here

當(dāng)然,您需要為 Markdown 文檔中的每種元素定義方法。


請(qǐng)注意,我在示例中使用了 Python f 字符串,這需要更新版本的 Python。如果使用舊版本,您可能需要進(jìn)行調(diào)整。


查看完整回答
反對(duì) 回復(fù) 2022-12-20
  • 1 回答
  • 0 關(guān)注
  • 273 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)