likewise/README.md
2021-02-06 21:45:34 +01:00

52 lines
1.8 KiB
Markdown

# similar
[![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)
[![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 Myer's and Patience algorithms and inherits some ideas
from there.
```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
* Diffing on arbitrary comparable sequences
* Line, word, character and grapheme level diffing
* Text and Byte diffing
* Unified diff generation
## 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)