前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「Go开源」freeze:一个能将源代码转换成图片的工具

「Go开源」freeze:一个能将源代码转换成图片的工具

作者头像
Go学堂
发布2024-04-18 19:28:02
1110
发布2024-04-18 19:28:02
举报
文章被收录于专栏:Go工具箱Go工具箱

大家好,我是渔夫子。

今天给大家推荐的开源工具是freeze,该工具可以将源代码或终端中的输出内容转换成对应的图片。如下图效果:

比如,我们想把一个go语言编写的源代码main.go转换成图片,则可以按如下方式操作:

代码语言:javascript
复制
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是什么,大家可以百度,这里不再介绍。

总之,通过开源包,不仅能学习到很多编程方面的知识,也能开拓我们的计算机视野。

这里是「Go学堂」,分享有用、有趣的编程知识。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Go学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档