Skip to content

Latest commit

 

History

History
95 lines (61 loc) · 3.22 KB

README_CN.md

File metadata and controls

95 lines (61 loc) · 3.22 KB

Re-Highlight

latest version

Re-Highlight是一个强大的文本语法高亮库,是Reqable项目中的一个模块。Re-Highlight可以将一个文本自动语法高亮,只需要定义好一个语法规则。当然,Re-Highlight已经内置了几十种编程语言的语法高亮规则,几行代码即可实现代码语法高亮。

Re-Highlight的实现代码全部由Dart语言编写,翻译自highlightjs项目。Re-Highlight的实现思路和灵感则来自于highlight.dart项目,感谢这些伟大的开源项目。由于highlight.dart项目存在一些问题且已停止更新, 所以才有了本项目的诞生。

👏👏👏 Re-Highlight已同步highlightjs当前的最新版本v11.9.0,并验证通过全部的测试用例。

下图是高亮效果,更多的样式和语言请参考example。

art

开始使用

添加依赖到 pubspec.yaml.

dependencies:
  re_highlight: ^0.0.2

高亮你的文字或者代码。

final Highlight highlight = Highlight();
highlight.registerLanguages(builtinAllLanguages);

const languages = [
  'json',
  'python',
  // other language
];

// Highlight your text or code.
final HighlightResult result = _highlight.highlightAuto('Your text or code', languages);

// Define your styles.
final TextStyle defaultStyle = TextStyle();
final Map<String, TextStyle> yourTheme = rainbowTheme;

// Convert highlight result to TextSpan
final TextSpanRenderer renderer = TextSpanRenderer(defaultStyle, yourTheme);
result.render(renderer);
final TextSpan? span = renderer.span;

// Pass the span to your Text Widget or TextEditingController.

更多代码请参考example。

原理和调试

Re-Highlight项目分为三个部分:高亮规则解释器,高亮规则文件和主题样式文件。规则解释器位于src目录下,高亮规则文件位于lib\languages目录下,主题样式文件文件位于lib\styles目录下。其中后两者是根据highlightjs中的文件自动生成,无需手动修改。

您可以使用下面的步骤自动生成高亮规则文件和主题样式文件。

  • 安装gulp
npm install gulp -g
  • 同步highlightjs相关模块。
git submodule update --remote --init
  • 生成高亮规则和主题样式。
cd tool
npm install
gulp generate
  • 运行测试用例。
flutter test

高亮规则解释器部分的代码是完全参照highlightjs翻译而来,我们尽量保持了文件结构、类名、函数名和代码逻辑的一致,方便后续升级同步。

问题和需求

Re-Highlight的高亮语法和逻辑严格翻译自highlightjs项目,如果您发现有语法问题或者需要支持新的语言,建议提交至highlightjs,我们会尽量及时同步。

如果是Dart或者Flutter相关的问题,欢迎在此项目提交Issue或者PR。

赞助

如果您希望赞助本项目,请优先赞助给highlightjs项目。如果仍有余力的话,可以通过购买Reqable的许可证来赞助我们。