class Idcf::Cli::Lib::Convert::Formatter::CsvFormat
csv formatter
Public Instance Methods
format(data)
click to toggle source
# File lib/idcf/cli/lib/convert/formatter/csv_format.rb, line 11 def format(data) result = CSV.generate(force_quotes: true) do |csv| scrape_line(data).each do |v| csv << v end end result.strip end
Protected Instance Methods
flat_hash(data)
click to toggle source
# File lib/idcf/cli/lib/convert/formatter/csv_format.rb, line 83 def flat_hash(data) result = {} return result unless data.class == Hash data.each do |k, v| value = v value = JSON.generate(value) if v.class == Array || v.class == Hash result[k.to_sym] = value end result end
make_header(first_list)
click to toggle source
# File lib/idcf/cli/lib/convert/formatter/csv_format.rb, line 33 def make_header(first_list) result = [] if first_list.class == Hash first_list.each_key do |k| result << k end else result = [*(0..(first_list.size - 1))] end result end
push_list(list, headers, result)
click to toggle source
# File lib/idcf/cli/lib/convert/formatter/csv_format.rb, line 45 def push_list(list, headers, result) list.each do |v| col = [] headers.each do |h| col << v[h] end result << col end result end
scrape(data)
click to toggle source
scrape @param data [Hash] @return Array in Hash
# File lib/idcf/cli/lib/convert/formatter/csv_format.rb, line 60 def scrape(data) return [flat_hash(data)] if data.class == Hash return [[data]] unless data.class == Array two_dimensional(data) end
scrape_line(data)
click to toggle source
# File lib/idcf/cli/lib/convert/formatter/csv_format.rb, line 23 def scrape_line(data) list = scrape(data) return [] if list.size.zero? result = [] headers = make_header(list.first) result << headers push_list(list, headers, result) end
two_dimensional(list)
click to toggle source
two dimensional @param list [Array] One-dimensional [array or Hash List] @return Array
# File lib/idcf/cli/lib/convert/formatter/csv_format.rb, line 70 def two_dimensional(list) [].tap do |result| list.each do |v| next if v.class == Array unless v.class == Hash result << [v] next end result << flat_hash(v) end end end