class Json2xxx::Core
Public Class Methods
new()
click to toggle source
# File lib/json2xxx/core.rb, line 13 def initialize end
Public Instance Methods
convert_backlog_wiki(data)
click to toggle source
# File lib/json2xxx/core.rb, line 43 def convert_backlog_wiki(data) headers = get_keys(data) result = [] result << '|~' + headers.join('|') + '|h' data.each do |hash| columns = headers.map{ |column_name| get_json_value(hash[column_name]).gsub("\n", "&br;") } result << '|~' + columns.join('|') + '|' end result.join("\n") end
convert_csv(data, delimiter, force_quotes, write_header)
click to toggle source
# File lib/json2xxx/core.rb, line 16 def convert_csv(data, delimiter, force_quotes, write_header) headers = get_keys(data) csv = [] CSV.generate(col_sep: delimiter, force_quotes: force_quotes) do |csv| csv << headers if write_header data.each do |hash| csv << headers.map { |column_name| get_json_value(hash[column_name]).gsub("\n", '') } end end end
convert_excel(data, filepath = Time.now.strftime("%Y%m%d%H%M%S") + '.xls')
click to toggle source
# File lib/json2xxx/core.rb, line 57 def convert_excel(data, filepath = Time.now.strftime("%Y%m%d%H%M%S") + '.xls') require 'spreadsheet' headers = get_keys(data) basename = File.basename(filepath, '.*') Spreadsheet.client_encoding = 'UTF-8' workbook = Spreadsheet::Workbook.new workbook.add_font 'MS ゴシック' worksheet = workbook.create_worksheet(name: basename) worksheet.row(0).replace headers unless data.class == Array puts 'data is not Array' exit end i = 1 data.each do |record| values = headers.map { |key| get_json_value(record[key]) } worksheet.row(i).replace values i = i + 1 end workbook.write(filepath) puts "write #{filepath}" end
convert_html(data)
click to toggle source
# File lib/json2xxx/core.rb, line 82 def convert_html(data) headers = get_keys(data) result = [] result << headers data.each do |hash| columns = headers.map{ |column_name| get_json_value(hash[column_name]).gsub("\n", '') } result << columns end result.to_html_table end
convert_markdown(data)
click to toggle source
# File lib/json2xxx/core.rb, line 29 def convert_markdown(data) headers = get_keys(data) result = [] header = '|' + headers.join('|') + '|' + "\n" + '|' + headers.map { |_header| ':--' }.join('|') + '|' data.each do |hash| columns = headers.map{ |column_name| get_json_value(hash[column_name]).gsub("\n", '').gsub("|", '') } result << columns end header + "\n" + result.to_table end
extract(data, fields)
click to toggle source
# File lib/json2xxx/core.rb, line 95 def extract(data, fields) data.map { |record| record = HashWrapper.new(record) fields.inject({}) { |result, field| eval_string = field[0] == "[" ? "record#{field}" : "record.#{field}" result[field] = eval(eval_string) result } } end
get_json_value(value)
click to toggle source
# File lib/json2xxx/core.rb, line 117 def get_json_value(value) return '' if value.nil? return value.to_json if value.class == Array || value.class == Hash || value.class == HashWrapper return value.to_s end
get_keys(data)
click to toggle source
# File lib/json2xxx/core.rb, line 112 def get_keys(data) keys = data.inject(Set.new) {|set, record| set.merge(record.keys) } keys.to_a end
sort(data, sort_column)
click to toggle source
# File lib/json2xxx/core.rb, line 106 def sort(data, sort_column) data.sort_by{ |record| record[sort_column] } end