Class: Json2xxx::Core

Inherits:
Object
  • Object
show all
Defined in:
lib/json2xxx/core.rb

Instance Method Summary collapse

Constructor Details

#initializeCore

Returns a new instance of Core.



13
14
# File 'lib/json2xxx/core.rb', line 13

def initialize
end

Instance Method Details

#convert_backlog_wiki(data) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# 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) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# 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') ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 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) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
# 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) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
# 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) ⇒ Object



95
96
97
98
99
100
101
102
103
104
# 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) ⇒ Object



117
118
119
120
121
# 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) ⇒ Object



112
113
114
115
# 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) ⇒ Object



106
107
108
109
110
# File 'lib/json2xxx/core.rb', line 106

def sort(data, sort_column)
  data.sort_by{ |record|
    record[sort_column]
  }
end