diff --git a/README.md b/README.md new file mode 100644 index 0000000..3110d4c --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# Difflib +Port of Python's difflib library to Rust. +It's provide all necessary tools for comparing word sequences. + +## Installation +Simply add difflib to your dependencies block in Cargo.toml + +```rust +[dependencies] +difflib = "0.1" +``` + +## Documentation +Documentation is available at https://github.com/DimaKudosh/difflib/wiki + +## Example +```rust +extern crate difflib; + +use difflib::differ::Differ; +use difflib::sequencematcher::SequenceMatcher; + + +fn main() { + // unified_diff + let first_text = "one two three four".split(" ").collect::>(); + let second_text = "zero one tree four".split(" ").collect::>(); + let diff = difflib::unified_diff(&first_text, &second_text, "Original", "Current", + "2005-01-26 23:30:50", "2010-04-02 10:20:52", 3, ""); + for line in &diff { + println!("{:?}", line); + } + + //context_diff + let diff = difflib::context_diff(&first_text, &second_text, "Original", "Current", + "2005-01-26 23:30:50", "2010-04-02 10:20:52", 3, ""); + for line in &diff { + println!("{:?}", line); + } + + //get_close_matches + let words = vec!["ape", "apple", "peach", "puppy"]; + let result = difflib::get_close_matches("appel", words, 3, 0.6); + println!("{:?}", result); + + //Differ examples + let differ = Differ::new(); + let diff = differ.compare(&first_text, &second_text); + for line in &diff { + println!("{:?}", line); + } + + //SequenceMatcher examples + let mut matcher = SequenceMatcher::new("one two three four", "zero one tree four"); + let m = matcher.find_longest_match(0, 18, 0, 18); + println!("{:?}", m); + let all_matches = matcher.get_matching_blocks(); + println!("{:?}", all_matches); + let opcode = matcher.get_opcodes(); + println!("{:?}", opcode); + let grouped_opcodes = matcher.get_grouped_opcodes(2); + println!("{:?}", grouped_opcodes); + let ratio = matcher.ratio(); + println!("{:?}", ratio); + matcher.set_seqs("aaaaa", "aaaab"); + println!("{:?}", matcher.ratio()); +} +```