1 个不稳定版本
0.1.0 | 2020 年 11 月 6 日 |
---|
#6 in #slugify
11KB
97 行
WordPress 的 Slugify 函数,用 Rust 实现。
Slug 是从手写或人类友好的标题生成的 URL 部分。为了既可读又适合搜索引擎优化,slug 通常会去除所有不必要的标点符号,并且由于它们打算用于 URL,因此会移除所有危险的 HTML 和 HTML 实体。
此算法与 WordPress 中使用的算法非常相似,即在 formatting.php
文件中的 sanitize_title_with_dashes()
,尽管通过利用 Rust 更强大的 Regex 库和 Rust 的本地 Unicode 功能,我能够在稍小的空间内完成它。它不是特别高效,但它是有效的。
在库中,你可以找到一系列展示其功能的测试。
原因
主要是我需要一个 slugification 函数,我在 crates.io 上找到的函数并没有让我感到满意。如今,URL 和数据库都意识到了 UTF-8,最受欢迎的要么使用 deunicode
,要么进行其他类型的篡改。
库中有两个函数:一个执行清理并返回清理后的单词的 Vec;另一个使用连字符将它们组合成一个 slug。由于我使用此库在文档存储中创建标题的 trie 来支持自动建议和自动引用功能,所以我需要 Vec。
清理阶段的重复让我有机会重启一些 macro_rules!
知识,因为我在最近没有使用它们,而且开始需要它们来完成我的其他项目。
许可证
- WordPress™ 是 Automattic, Inc. 的商标。
此 slugification 库的版权为 Elf M. Sternberg (c) 2019,并以 Mozilla 公共许可证版本 2.0 许可。许可证文件副本包含在 docs/
文件夹中。
依赖项
~2.2–3MB
~54K SLoC