2016-02-29 14:05:31 +03:00
2016-02-29 14:05:31 +03:00
2016-02-29 14:05:31 +03:00
2016-02-29 14:05:31 +03:00
2016-02-29 13:33:40 +03:00
2016-02-29 13:35:02 +03:00

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

[dependencies]
difflib = "0.1"

Documentation

Documentation is available at https://github.com/DimaKudosh/difflib/wiki

Example

extern crate difflib;

use difflib::differ::Differ;
use difflib::sequencematcher::SequenceMatcher;


fn main() {
    // unified_diff
    let first_text = "one two three four".split(" ").collect::<Vec<&str>>();
    let second_text = "zero one tree four".split(" ").collect::<Vec<&str>>();
    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());
}
S
Description
No description provided
Readme 98 KiB
Languages
Rust 100%