「Go 開源」freeze:一個能將源代碼轉換成圖片的工具
大家好,我是漁夫子。
今天給大家推薦的開源工具是 freeze,該工具可以將源代碼或終端中的輸出內容轉換成對應的圖片。如下圖效果:
比如,我們想把一個 go 語言編寫的源代碼 main.go 轉換成圖片,則可以按如下方式操作:
freeze main.go --output main.png
生成的效果如下:
你看,就把對應的代碼按照高亮的形式生成了圖片。
實現原理
那這個 freeze 的實現原理是什麼呢?通過閱讀代碼,我們發現該包本質上依賴 github.com/alecthomas/chroma 這個包和 svg。
通過 chroma 將源代碼格式化輸出成 html 文件,然後通過 svg 將 html 文件轉換成圖片。
我們來看下這個 chroma 包具體是做什麼的?
嗯,根據主頁說明,Chroma 是一個用 go 語言編寫的語法高亮包。它可以按照編程語言的規則高亮顯示並轉換成 html 文件。
其實 Chroma 包含 3 部分:lexers、formatters 和 styles。
其中 lexers 是將源碼轉換成對應的 tokens,即語法分析。styles 是將對應的語法 token 映射成對應的樣式。最後,通過 formatters 將語法 tokens 和樣式轉進行格式化輸出成 html。
最後,freeze 通過 svg 將 html 輸出成對應的圖片。具體 svg 是什麼,大家可以百度,這裏不再介紹。
總之,通過開源包,不僅能學習到很多編程方面的知識,也能開拓我們的計算機視野。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/94-mTcI2mitEoV5SCo_Jyg