README.md in tafel-0.1.0 vs README.md in tafel-0.3.0

- old
+ new

@@ -1,7 +1,120 @@ # tafel -# license +[![Build Status](https://secure.travis-ci.org/jmettraux/tafel.svg)](http://travis-ci.org/jmettraux/tafel) +[![Gem Version](https://badge.fury.io/rb/tafel.svg)](http://badge.fury.io/rb/tafel) + +A Ruby library to turn pieces of data into arrays of arrays (tables). + +## interface + +### Tafel .to_htable .to_h + +Turns the argument into a table where keys are arrayed horizontally. + +```ruby + require 'tafel' + + # + # hash of hashes + + Tafel.to_h( + { + 'USD' => { code: 'USD', change: 1.0, min: 500, status: 'active' }, + 'EUR' => { code: 'EUR', change: 1.07, status: 'active' }, + 'CHF' => { code: 'CHF', change: 1.08, min: 700 } + } + ) + # ==> + [ + [ :key, :code, :change, :min, :status ], + [ 'USD', 'USD', 1.0, 500, 'active' ], + [ 'EUR', 'EUR', 1.07, nil, 'active' ], + [ 'CHF', 'CHF', 1.08, 700, nil ] + ] + + # + # array of hashes + + Tafel.to_htable( + [ + { a: 1, b: 2 }, + { a: 3, b: 4, c: 5 }, + { a: 6, c: 7 } + ] + ) + # ==> + [ + [ :a, :b, :c ], + [ 1, 2, nil ], + [ 3, 4, 5 ], + [ 6, nil, 7 ] + ] + + # + # plain hash + + Tafel.to_htable( + { a: 3, b: 4, c: 5 } + ) + # ==> + [ + [ :a, :b, :c ], + [ 3, 4, 5 ] + ] +``` + +### Tafel .to_vtable .to_v + +Turns the argument into a table where keys are arrayed vertically. + +It leaves non-array and no-hash instances as is. + +```ruby + require 'tafel' + + Tafel.to_v( + { interpreter: 'Leo Ferre', song: { name: "C'est extra", year: 1969 } } + ) + # ==> + [ + [ :interpret, 'Leo Ferre' ], + [ :song, [ [ :name, "C'est extra" ], [ :year, 1969 ] ] ] + ] +``` + +It accepts a limit integer parameter defaulting to -1 (recurse entirely). For example: + +```ruby + Tafel.to_v( + { interpreter: 'Leo Ferre', song: { name: "C'est extra", year: 1969 } }, + 1 + ) + # ==> + [ + [ :interpret, 'Leo Ferre' ], + [ :song, { name: "C'est extra", year: 1969 } ] + ] +``` + +### Tafel.flatten + +Turns nested tables into a single table. + +```ruby + require 'tafel' + + Tafel.flatten( + [ [ 0, 1 ], + [ 2, [ [ 3, 4 ], [ 5, 6 ] ] ] ] + ) + # --> + [ [ 0, 1, nil ], + [ 2, 3, 4 ], + [ nil, 5, 6 ] ] +``` + +## license MIT, see LICENSE.txt