diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:47:55 +0000 |
commit | 2aadc03ef15cb5ca5cc2af8a7c08e070742f0ac4 (patch) | |
tree | 033cc839730fda84ff08db877037977be94e5e3a /vendor/similar/README.md | |
parent | Initial commit. (diff) | |
download | cargo-upstream.tar.xz cargo-upstream.zip |
Adding upstream version 0.70.1+ds1.upstream/0.70.1+ds1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/similar/README.md')
-rw-r--r-- | vendor/similar/README.md | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/vendor/similar/README.md b/vendor/similar/README.md new file mode 100644 index 0000000..75b6c6c --- /dev/null +++ b/vendor/similar/README.md @@ -0,0 +1,60 @@ +# Similar: A Diffing Library + +[![Build Status](https://github.com/mitsuhiko/similar/workflows/Tests/badge.svg?branch=main)](https://github.com/mitsuhiko/similar/actions?query=workflow%3ATests) +[![Crates.io](https://img.shields.io/crates/d/similar.svg)](https://crates.io/crates/similar) +[![License](https://img.shields.io/github/license/mitsuhiko/similar)](https://github.com/mitsuhiko/similar/blob/main/LICENSE) +[![rustc 1.41.0](https://img.shields.io/badge/rust-1.41%2B-orange.svg)](https://img.shields.io/badge/rust-1.41%2B-orange.svg) +[![Documentation](https://docs.rs/similar/badge.svg)](https://docs.rs/similar) + +Similar is a dependency free crate for Rust that implements different diffing +algorithms and high level interfaces for it. It is based on the +[pijul](https://pijul.org/) implementation of the Patience algorithm and +inherits some ideas from there. It also incorporates the Myer's diff +algorithm which was largely written by Brandon Williams. This library was +built for the [insta snapshot testing library](https://insta.rs). + +```rust +use similar::{ChangeTag, TextDiff}; + +fn main() { + let diff = TextDiff::from_lines( + "Hello World\nThis is the second line.\nThis is the third.", + "Hallo Welt\nThis is the second line.\nThis is life.\nMoar and more", + ); + + for change in diff.iter_all_changes() { + let sign = match change.tag() { + ChangeTag::Delete => "-", + ChangeTag::Insert => "+", + ChangeTag::Equal => " ", + }; + print!("{}{}", sign, change); + } +} +``` + +## Screenshot + +![terminal highlighting](https://raw.githubusercontent.com/mitsuhiko/similar/main/assets/terminal-inline.png) + +## What's in the box? + +* Myer's diff +* Patience diff +* Hunt–McIlroy / Hunt–Szymanski LCS diff +* Diffing on arbitrary comparable sequences +* Line, word, character and grapheme level diffing +* Text and Byte diffing +* Unified diff generation + +## Related Projects + +* [insta](https://insta.rs) snapshot testing library +* [similar-asserts](https://github.com/mitsuhiko/similar-asserts) assertion library + +## License and Links + +* [Documentation](https://docs.rs/similar/) +* [Issue Tracker](https://github.com/mitsuhiko/similar/issues) +* [Examples](https://github.com/mitsuhiko/similar/tree/main/examples) +* License: [Apache-2.0](https://github.com/mitsuhiko/similar/blob/main/LICENSE) |