1 个不稳定版本

0.1.0 2020 年 11 月 6 日

#6 in #slugify

MPL-2.0+

11KB
97

Language: Rust Topic: Web Topic: Slugs Library Status: Complete

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