#diff #semantic #algorithm #cleanup #google #likely #diff-match-patch

dissimilar

基于 Google 的 diff-match-patch 的语义清理 diff 库

10 个稳定版本

1.0.9 2024 年 5 月 6 日
1.0.7 2023 年 7 月 15 日
1.0.6 2023 年 1 月 20 日
1.0.5 2022 年 12 月 17 日
1.0.1 2019 年 12 月 24 日

算法 中排名 #20

Download history 129216/week @ 2024-05-03 139283/week @ 2024-05-10 134297/week @ 2024-05-17 134003/week @ 2024-05-24 133674/week @ 2024-05-31 129831/week @ 2024-06-07 124825/week @ 2024-06-14 128651/week @ 2024-06-21 114423/week @ 2024-06-28 121153/week @ 2024-07-05 130717/week @ 2024-07-12 132563/week @ 2024-07-19 129669/week @ 2024-07-26 129265/week @ 2024-08-02 148310/week @ 2024-08-09 133031/week @ 2024-08-16

567,798 每月下载量
用于 584 包(32 个直接使用)

Apache-2.0

70KB
1.5K SLoC

Dissimilar:具有语义清理的 diff 库

github crates.io docs.rs build status

这个库是将 Diff Match Patch 的 Diff 组件移植到 Rust 的结果。diff 实现基于 Myers' diff 算法,但包含一些 语义清理,通过提取可能偶然出现的共同点来提高可读性。

Diff Match Patch 最初于 2006 年构建,用于驱动 Google Docs。

[dependencies]
dissimilar = "1.0"

编译器支持:需要 rustc 1.36+


接口

以下是 Rust 实现的完整 API。它操作借用的字符串,diff 算法的返回值是一个指向输入字符串切片的块向量。

pub enum Chunk<'a> {
    Equal(&'a str),
    Delete(&'a str),
    Insert(&'a str),
}

pub fn diff(text1: &str, text2: &str) -> Vec<Chunk>;

许可证

此包中的 diff 算法是用 https://github.com/google/diff-match-patch 中找到的 Java 和 C++ 实现移植到 Rust 的,并在此处根据原始许可证的 Apache 许可证 2.0 版提供。整个项目,包括未经修改的上游部分和移植过程中引入的 Rust 特定修改,均在此 Apache 许可证下分发。

除锈实现独有的知识产权外,还可以根据您的选择,在 MIT 许可证 下提供,如果需要的话。这适用于上游存储库中没有找到的所有设计选择和实现选择。

除非您明确声明,否则您根据 Apache-2.0 许可证定义的任何有意提交的、旨在包含在此包中的贡献,均将双重 Apache 和 MIT 许可,没有任何额外条款或条件。

没有运行时依赖