9个版本 (稳定版)
1.0.5 | 2024年3月15日 |
---|---|
1.0.4 | 2024年2月19日 |
1.0.3 | 2023年7月10日 |
1.0.2 | 2023年3月4日 |
0.1.0 | 2019年12月12日 |
#102 在 编码
19,381 每月下载量
用于 9 个crate (6个直接使用)
72KB
947 行
按照标准编码和解码HTML实体
如果您只需将文本转义以嵌入HTML中,则安装只需运行
cargo add htmlize
如果您要将实体转换回原始文本,请参阅下面的将实体转换回文本。
将文本转义为实体
escape
函数应该涵盖大多数您需要安全地将字符串嵌入HTML的情况。通常,如果文本用于属性中,请使用 escape_attribute()
,否则请使用 escape_text()
。
& |
< |
> |
" |
' |
|
---|---|---|---|---|---|
escape_text() |
✓ | ✓ | ✓ | ||
escape_attribute() |
✓ | ✓ | ✓ | ✓ | |
escape_all_quotes() |
✓ | ✓ | ✓ | ✓ | ✓ |
几乎不需要使用 escape_all_quotes()
,但它包括在内,因为有时将属性值用单引号括起来很方便。
escape_text(string) ->string
转义字符串以便它可以嵌入主文本。这不会转义任何引号。
参考。另请参阅 escape_text_bytes()
。
escape_attribute(string) ->string
转义字符串以便它可以嵌入属性中。属性始终使用双引号。
参考。另请参阅 escape_attribute_bytes()
。
escape_all_quotes(string) ->string
转义字符串中的单引号和双引号以及其他标准字符。通常您不需要使用此功能。
参考。另请参阅 escape_all_quotes_bytes()
。
将实体转换为文本
这需要 unescape
或 unescape_fast
功能。(unescape
构建速度更快,所以除非你真的需要非常快的转换,否则请使用它。)要配置它
cargo add htmlize --features unescape
unescape(string) ->string
这遵循了 官方 WHATWG 算法来扩展一般实体。
严格来说,这并不能正确处理来自属性值的文本。对于大多数用途来说,这可能是可以接受的,但如果你知道输入字符串来自属性值,请使用 unescape_attribute()
代替。有关更多信息,请参阅 unescape_in()
参考文档。
参考.
unescape_attribute(string) ->string
这遵循了 官方 WHATWG 算法来扩展属性值中找到的实体。
唯一的区别在于如何处理不带尾随分号的命名实体。有关更多信息,请参阅 unescape_in()
参考文档。
参考.
unescape_in(string, Htmlize::上下文) ->string
这遵循了 官方 WHATWG 算法来根据实体所在的上下文扩展实体。有关更多信息,请参阅 参考文档。
参考.
unescape_bytes_in([u8], Htmlize::上下文) -> [u8]
这与 unescape_in()
相同,但它对字节而不是字符串进行操作。(注意,这两个函数实际上都接收并返回 Cow
。)
参考.
特性
escape
函数在没有启用任何特性时都可用。
-
unescape_fast
:提供unescape()
的快速版本。这不会自动启用entities
特性。这的构建时间可能比
unescape
多 30 秒,但最坏情况下的性能显著更好。话虽如此,unescape
版本的性能已经相当不错,所以我建议除非你真的需要它,否则不要启用这个特性。 -
unescape
:提供unescape()
的正常版本。这将自动启用entities
特性。 -
entities
:构建ENTITIES
映射。启用此功能将在构建时添加对 phf 的依赖,并可能使构建速度慢几秒。
所有其他特性都是内部的,在指定依赖时不应该使用。请参阅 参考文档。
基准测试
本文件包含两组基准测试。一组是使用criterion进行的典型多运行基准测试。这些测试可以通过cargo bench
或cargo criterion
(如果已安装)来运行。
要在unescape函数上运行基准测试,请启用bench
和unescape
或unescape_fast
(或两者)功能。
注意: 内部bench
功能是必需的,以便将内部函数如unescape_fast()
和unescape_slow()
暴露给基准测试。在指定依赖项时,不要启用此功能,因为其行为可能从点发布到点发布不保持一致。
iai基准测试
另一组基准测试使用iai来计数指令、缓存访问并估算周期。它需要启用内部iai
功能,并且仅在Linux上运行良好。
在本地运行iai基准测试
cargo bench --features iai iai
您可能需要使用--all-features
或--features iai,bench,unescape
或--features iai,bench,unescape_fast
来启用unescape函数的基准测试。
在Docker容器中运行,请使用docker.sh
脚本。如果需要,它将构建一个镜像,然后在所有未来的运行中使用该镜像
./docker.sh cargo bench --features iai iai
您还可以以交互模式启动它,并多次运行基准测试
❯ ./docker.sh
root@d0a0db46770d:/work# cargo bench --features iai iai
Compiling htmlize [...]
开发状态
这是稳定的。我没有计划添加新功能,尽管我欢迎建议。
许可证
此项目采用Apache 2和MIT许可证双重授权。您可以选择使用其中任何一个。
entities.json文件版权属于WHATWG,并从https://html.whatwg.com.cn/entities.json复制。它根据BSD 3-Clause许可证授权。
贡献
除非您明确声明,否则您提交的任何贡献,根据Apache 2.0许可证定义,均应如上所述双重授权,不附加任何额外的条款或条件。
依赖项
~110–305KB