#bbcode #html #compiler #robust #opinionated #html-parser #performance-focused

nightly bbclash

一个健壮、有意见、注重性能的BBCode到HTML解析器和编译器

6个版本 (3个稳定版)

1.1.1 2020年4月12日
1.1.0 2019年11月19日
1.0.0 2019年9月17日
0.1.2 2019年9月6日

#2655解析器实现

每月21次下载

MIT 许可证

73KB
2K SLoC

BBClash

Crates.io Documentation Crates.io

BBClash是一个健壮、有意见、注重性能的BBCode到HTML解析器和编译器。

什么是BBClash?

BBClash是为Penclash构建的BBCode编译器的开源版本。与大多数实现不同,BBClash不是基于正则表达式的。它像编译器一样工作,将标记、词法分析和从类似AST的对象中构建符合HTML的结构。这使得它健壮,并且能够很好地处理格式不正确的输入。

我们的BBCode规范可以在这里找到。

注意:当前需要Rust Nightly。相关问题:54727

通用用法

use bbclash::bbcode_to_html;

assert_eq!(bbcode_to_html("I'm [i]italic[/i] and [b]bold![/b]"), 
		"<p>I&#x27m <i>italic</i> and <b>bold!</b></p>");

美观和丑陋输出

BBClash有两种主要的工作模式:美观丑陋。美观输出使用bbcode_to_html函数,并从最终输出中排除格式不正确的bbcode和空元素

use bbclash::bbcode_to_html;

assert_eq!(bbcode_to_html("I'm [colour]missing an argument![/colour]"), 
		"<p>I&#x27m missing an argument!</p>");

assert_eq!(bbcode_to_html("[quote][/quote]"), 
		"");

丑陋使用bbcode_to_html_ugly函数,并将格式不正确的BBCode标签和空元素保留在最终输出中

use bbclash::bbcode_to_html_ugly;

assert_eq!(bbcode_to_html_ugly("I'm [colour]missing an argument![/colour]"), 
		"<p>I&#x27m [colour]missing an argument![/colour]</p>");

assert_eq!(bbcode_to_html_ugly("[quote][/quote]"), 
		"<blockquote></blockquote>");

请注意,这两种模式都不会任意删除方括号中的任何文本。这只会影响格式不正确的BBCode标签;[non tags]将不会受到影响。

自定义用法

由于这个包是为现有的应用程序构建的,并且由于它注重性能,BBClash的BBCode实现完全是硬编码的。因此,建议您下载本地副本并修改以适应您的需求。

构建只需运行$ cargo build。测试和基准测试可以通过$ cargo test$ cargo bench分别运行。

许可证

此版本的BBClash是根据MIT许可证条款许可的。

依赖关系

~3MB
~59K SLoC