class ActiveReport::Base
Public Class Methods
evaluate(value = true)
click to toggle source
# File lib/active_report/base.rb, line 31 def self.evaluate(value = true) @@evaluate = value self end
export(data, opts = {})
click to toggle source
# File lib/active_report/base.rb, line 36 def self.export(data, opts = {}) klass = new(data, opts) klass.export end
import(data, opts = {})
click to toggle source
# File lib/active_report/base.rb, line 41 def self.import(data, opts = {}) klass = new(data, opts) klass.import end
new(data, opts = {})
click to toggle source
# File lib/active_report/base.rb, line 7 def initialize(data, opts = {}) @data = data @opts = opts %i[except only].each { |key| @opts[key] = munge(@opts[key]) } { batch_size: 1_000, options: csv_options }.each { |key, val| @opts[key] ||= val } end
Public Instance Methods
csv_force_encoding?()
click to toggle source
# File lib/active_report/base.rb, line 19 def csv_force_encoding? ActiveReport.configuration.csv_force_encoding end
csv_options()
click to toggle source
# File lib/active_report/base.rb, line 15 def csv_options ActiveReport.configuration.csv_options end
import_adapter()
click to toggle source
# File lib/active_report/base.rb, line 23 def import_adapter ActiveReport.configuration.import_adapter end
import_options()
click to toggle source
# File lib/active_report/base.rb, line 27 def import_options ActiveReport.configuration.import_options end
Private Instance Methods
active_record_column_names(object)
click to toggle source
# File lib/active_report/base.rb, line 60 def active_record_column_names(object) return object.klass.column_names if ransack_object?(object) object.column_names end
active_record_table_class?(object)
click to toggle source
# File lib/active_report/base.rb, line 54 def active_record_table_class?(object) return if object.nil? || active_relation_object?(object) object.respond_to?(:table_name) || ransack_object?(object) end
active_record_table_object?(object)
click to toggle source
# File lib/active_report/base.rb, line 48 def active_record_table_object?(object) return if object.nil? !object.respond_to?(:table_name) end
active_relation_object?(object)
click to toggle source
# File lib/active_report/base.rb, line 66 def active_relation_object?(object) object.is_a?(ActiveRecord::Relation) end
encode_to_utf8(line)
click to toggle source
# File lib/active_report/base.rb, line 70 def encode_to_utf8(line) line.map do |chr| next if chr.nil? chr = chr.tr('"', '') chr.encode!('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '') end end
evaluate?()
click to toggle source
# File lib/active_report/base.rb, line 79 def evaluate? value = @@evaluate @@evaluate = false value end
filter(object)
click to toggle source
# File lib/active_report/base.rb, line 85 def filter(object) if @opts[:only].empty? return object if @opts[:except].empty? object.delete_if { |key, _| @opts[:except].include?(key) } else object.keep_if { |key, _| @opts[:only].include?(key) } end end
filter_humanize_keys(data)
click to toggle source
# File lib/active_report/base.rb, line 99 def filter_humanize_keys(data) filter(data.first).collect { |key, _| humanize(key) } end
filter_values(data)
click to toggle source
# File lib/active_report/base.rb, line 95 def filter_values(data) filter(data).values end
humanize(object)
click to toggle source
# File lib/active_report/base.rb, line 103 def humanize(object) object.to_s.tr('_', ' ').capitalize end
humanize_values(data)
click to toggle source
# File lib/active_report/base.rb, line 107 def humanize_values(data) data.map { |col| humanize(col) } end
merge(object)
click to toggle source
# File lib/active_report/base.rb, line 111 def merge(object) [object].compact end
metaform(value)
click to toggle source
rubocop:disable Security/Eval
# File lib/active_report/base.rb, line 116 def metaform(value) eval(value.to_s) rescue Exception value end
metaform_array(data)
click to toggle source
rubocop:enable Security/Eval
# File lib/active_report/base.rb, line 123 def metaform_array(data) data.map { |val| metaform(val) } end
metaform_hash(data)
click to toggle source
# File lib/active_report/base.rb, line 127 def metaform_hash(data) data.each { |key, val| data[key] = metaform(val) } end
metamorph(data)
click to toggle source
# File lib/active_report/base.rb, line 139 def metamorph(data) case data.class.name when 'Array' then metamorph_array(data) when 'Hash' then metaform_hash(data) else metaform(data) end end
metamorph_array(data)
click to toggle source
# File lib/active_report/base.rb, line 131 def metamorph_array(data) case data.first.class.name when 'Array' then data.map { |arr| metaform_array(arr) } when 'Hash' then data.map { |hsh| metaform_hash(hsh) } else metaform_array(data) end end
metatransform(data)
click to toggle source
# File lib/active_report/base.rb, line 147 def metatransform(data) return if data.empty? evaluate? ? metamorph(data) : data end
munge(data)
click to toggle source
# File lib/active_report/base.rb, line 153 def munge(data) data.is_a?(Array) ? data : merge(data) end
munge_first(data)
click to toggle source
# File lib/active_report/base.rb, line 157 def munge_first(data) data.first.is_a?(Array) ? data : merge(data) end
ransack_object?(object)
click to toggle source
# File lib/active_report/base.rb, line 161 def ransack_object?(object) return false unless defined?(::Ransack) object.is_a?(::Ransack::Search) end