README.md in cevennes-0.13.0 vs README.md in cevennes-1.0.0

- old
+ new

@@ -4,19 +4,56 @@ [![Build Status](https://secure.travis-ci.org/jmettraux/cevennes.svg)](http://travis-ci.org/jmettraux/cevennes) [![Gem Version](https://badge.fury.io/rb/cevennes.svg)](http://badge.fury.io/rb/cevennes) Diffs CSVs by lines, focusing on a single ID + ## usage -TODO +Given two CSV strings and an identifier name, cevennes may compute a diff: +```ruby +require 'cevennes' + +cvs0 = %{ + id,name,age + 0,John,33 + 1,Jean-Baptiste,43 + 3,Luke,21 +}.strip + "\n" +cvs1 = %{ + id,name,age + 0,John,33 + 1,Jean-Baptiste,44 + 4,Matthew,20 +}.strip + "\n" + +d = Cevennes.diff('id', cvs0, cvs1) ``` -csv0 = %{ - } -csv1 = %{ - } -pp Cevennes.diff('ISIN', csv0, csv1) + +`d` will yield: +```ruby +[ + [ 'keys', 1, [ 'id', 'name', 'age' ], + 1, [ 'id', 'name', 'age' ] ], + [ 'stats', + { '=' => 1, '!' => 1, '-' => 1, '+' => 1, + 'l0' => 3, 'l1' => 3 } ], + [ '=', 2, [ '0', 'John', '33'], + 2, nil ], + [ '!', 3, [ '1', 'Jean-Baptiste', '43' ], + 3, [ '1', 'Jean-Baptiste', '44' ] ], + [ '-', 4, [ '3', 'Luke', '21'], + -1, nil ], + [ '+', -1, nil, + 4, [ '4', 'Matthew', '20' ] ] +] ``` +It's a list where the first entry is a recap of the keys used in the old and the new CSV strings (the integer is the line number (starting at 1) where the keys where found. + +The second entry is a summary of the changes, altered `!` line count, removed `-` line count, added `+` line count, old length `l0`, new length `l1`, and unchanged `=` line count. + +The remaining entries are the (non-)changes themselves, from line 1 to the end. + ## LICENSE MIT, see [LICENSE.txt](LICENSE.txt)