class JsonCli::Command::Unwind
Unwind
JSON class
Public Class Methods
new(io, options)
click to toggle source
Calls superclass method
JsonCli::Command::Base::new
# File lib/json_cli/command/unwind.rb, line 7 def initialize(io, options) super(options) @io = io @unwind_key = options[:unwind_key] @flatten = options[:flatten] @key_label = options[:key_label] || 'key' @value_label = options[:value_label] || 'value' end
Public Instance Methods
unwind_array()
click to toggle source
# File lib/json_cli/command/unwind.rb, line 16 def unwind_array @io.each do |line| obj = MultiJson.load(line.chomp) if !obj.key?(@unwind_key) || !obj[@unwind_key].is_a?(Array) @output.puts MultiJson.dump(obj) else unwind_array_obj(obj) end end end
unwind_hash()
click to toggle source
# File lib/json_cli/command/unwind.rb, line 27 def unwind_hash @io.each do |line| obj = MultiJson.load(line.chomp) if !obj.key?(@unwind_key) || !obj[@unwind_key].is_a?(Hash) @output.puts MultiJson.dump(obj) elsif @flatten unwind_hash_obj_flatten(obj) else unwind_hash_obj(obj) end end end
Private Instance Methods
unwind_array_obj(obj)
click to toggle source
# File lib/json_cli/command/unwind.rb, line 42 def unwind_array_obj(obj) obj[@unwind_key].each do |val| @output.puts MultiJson.dump(obj.merge(@unwind_key => val)) end end
unwind_hash_obj(obj)
click to toggle source
# File lib/json_cli/command/unwind.rb, line 48 def unwind_hash_obj(obj) obj[@unwind_key].each do |key, val| jj = obj.merge(@unwind_key => { key => val }) @output.puts MultiJson.dump(jj) end end
unwind_hash_obj_flatten(obj)
click to toggle source
# File lib/json_cli/command/unwind.rb, line 55 def unwind_hash_obj_flatten(obj) base = obj.select { |key, _| key != @unwind_key } obj[@unwind_key].each do |key, val| jj = base.merge( @key_label => key, @value_label => val ) @output.puts MultiJson.dump(jj) end end