JoinableArray

A small gem to make it easier to do relational joins with arrays in ruby without requiring database calls.

Installation

Add this line to your application's Gemfile:

gem 'joinable_array'

And then execute:

$ bundle

Or install it yourself as:

$ gem install joinable_array

Usage

joinable_array offers a JoinableArray class which can be used as

things1 = JoinableArray(array1)
things2 = JoinableArray(array2)

outer_join = things1
  .outer_join(things2) {|l,r| l.merge(r)}

inner_join = things1
  .joins_on {|x| [x[0], x[1]]}
  .inner_join(things2.joins_on {|x| [x.a, x.b]}) {|l,r| l.merge(r)}

left_join = things1
  .joins_on {|x| [x[0], x[1]]}
  .fills_with {|key| key[0 .. -1].concat([0,0,0])}
  .left_join(things2.joins_on {|x| [x.a, x.b]}) {|l,r| l.merge(r)}

right_join = things1
  .joins_on {|x| [x[0], x[1]]}
  .right_join(things2
    .joins_on {|x| [x.a, x.b]}
    .fills_with {|key|, Obj.new(*key)}
  ) {|l,r| l.merge(r)}

The simplest join is outer_join which is a method on JoinableArray and requires another JoinableArray as its parameter and returns a 3rd JoinableArray which is the outer join of the original two JoinableArray instances. The elements of the returned JoinableArray is defined by the block passed to outer_join. The block accepts two parameters: the first is an element from the first JoinableArray and the second is from the other JoinableArray. The block returns the value of resulting JoinableArray