lib/chronicle/etl/loaders/table_loader.rb in chronicle-etl-0.4.0 vs lib/chronicle/etl/loaders/table_loader.rb in chronicle-etl-0.4.1
- old
+ new
@@ -9,38 +9,41 @@
r.description = 'an ASCII table'
end
setting :fields_limit, default: nil
setting :fields_exclude, default: ['lids', 'type']
- setting :fields_include, default: []
+ setting :fields, default: []
setting :truncate_values_at, default: 40
setting :table_renderer, default: :basic
def load(record)
- @records ||= []
- @records << record.to_h_flattened
+ records << record.to_h_flattened
end
def finish
- return if @records.empty?
+ return if records.empty?
- headers = build_headers(@records)
- rows = build_rows(@records, headers)
+ headers = build_headers(records)
+ rows = build_rows(records, headers)
@table = TTY::Table.new(header: headers, rows: rows)
puts @table.render(
@config.table_renderer.to_sym,
padding: [0, 2, 0, 0]
)
end
+ def records
+ @records ||= []
+ end
+
private
def build_headers(records)
headers =
- if @config.fields_include.any?
- Set[*@config.fields_include]
+ if @config.fields.any?
+ Set[*@config.fields]
else
# use all the keys of the flattened record hash
Set[*records.map(&:keys).flatten.map(&:to_s).uniq]
end
@@ -50,10 +53,10 @@
headers.to_a.map(&:to_sym)
end
def build_rows(records, headers)
records.map do |record|
- values = record.values_at(*headers).map{|value| value.to_s }
+ values = record.transform_keys(&:to_sym).values_at(*headers).map{|value| value.to_s }
if @config.truncate_values_at
values = values.map{ |value| value.truncate(@config.truncate_values_at) }
end