Class: Json2xxx::Core
- Inherits:
-
Object
- Object
- Json2xxx::Core
- Defined in:
- lib/json2xxx/core.rb
Instance Method Summary collapse
- #convert_backlog_wiki(data) ⇒ Object
- #convert_csv(data, delimiter, force_quotes, write_header) ⇒ Object
- #convert_excel(data, filepath = Time.now.strftime("%Y%m%d%H%M%S") + '.xls') ⇒ Object
- #convert_html(data) ⇒ Object
- #convert_markdown(data) ⇒ Object
- #extract(data, fields) ⇒ Object
- #get_json_value(value) ⇒ Object
- #get_keys(data) ⇒ Object
-
#initialize ⇒ Core
constructor
A new instance of Core.
- #sort(data, sort_column) ⇒ Object
Constructor Details
#initialize ⇒ Core
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 |