Wombat - 从Crystal调用Rust的Bat实现语法高亮

Wombat - 从Crystal调用Rust的Bat实现语法高亮

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

本文介绍了如何在Crystal中使用Rust编写的命令行工具bat作为库。bat提供语法高亮等功能,作者通过添加print_with_writer函数实现了字符串的高亮显示。为从Crystal调用bat,作者创建了轻量级的C库包装器,并配置了自动化版本更新。尽管库体积较大,但主要目标已基本实现。

🎯

关键要点

  • 介绍了如何在Crystal中使用Rust编写的命令行工具bat作为库。
  • bat是一个类似于cat的命令行工具,提供行号、语法高亮和分页等功能。
  • Crystal缺乏强大的语法高亮库,因此考虑将bat作为库使用。
  • bat可以作为Rust库使用,通过PrettyPrinter结构实现语法高亮。
  • 添加了print_with_writer函数以实现字符串的高亮显示,该函数已在bat v0.25.0中合并。
  • 创建了一个轻量级的C库包装器,以便从Crystal调用bat。
  • Rust库不能直接从Crystal调用,因此需要通过C语言接口进行调用。
  • 在实现中添加了显示版本的功能,方便用户识别bat-c的版本。
  • 配置Cargo.toml以生成动态和静态库,并优化构建过程。
  • 引入Renovate自动化库版本更新,配置JSON文件以实现自动触发发布。
  • 创建了wombat库以便从Crystal调用bat-c,解决了库的下载和安装问题。
  • 提供了示例代码,展示如何使用wombat库进行语法高亮显示。
  • 尽管实现了大部分目标,但仍存在库体积较大和API设计不够精炼的问题。
  • 项目是个人的爱好项目,可能存在不便或错误,欢迎提交问题或拉取请求。
➡️

继续阅读