Class: JsonCli::Command::Join

Inherits:
Base
  • Object
show all
Defined in:
lib/json_cli/command/join.rb

Overview

Join JSON class

Instance Method Summary collapse

Constructor Details

#initialize(left_io, right_io, options) ⇒ Join

Returns a new instance of Join.



8
9
10
11
12
13
# File 'lib/json_cli/command/join.rb', line 8

def initialize(left_io, right_io, options)
  super(options)
  @left_io = left_io
  @right_io = right_io
  @join_key = options[:join_key]
end

Instance Method Details

#inner_joinObject



23
24
25
26
27
28
29
30
31
# File 'lib/json_cli/command/join.rb', line 23

def inner_join
  right = io2hash(@right_io)
  @left_io.each do |line|
    obj = MultiJson.load(line.chomp)
    next if !obj.key?(@join_key) ||
      !right.key?((jk_val = obj[@join_key]))
    @output.puts MultiJson.dump(obj.merge(right[jk_val]))
  end
end

#left_joinObject



15
16
17
# File 'lib/json_cli/command/join.rb', line 15

def left_join
  join(@left_io, @right_io)
end

#right_joinObject



19
20
21
# File 'lib/json_cli/command/join.rb', line 19

def right_join
  join(@right_io, @left_io)
end