class ActiveList::Exporters::AbstractExporter
Attributes
generator[R]
table[R]
Public Class Methods
new(generator)
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 6 def initialize(generator) @generator = generator @table = generator.table end
Public Instance Methods
columns_headers(options = {})
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 50 def columns_headers(options = {}) headers = [] columns = table.exportable_columns for column in columns datum = column.header_code headers << (options[:encoding] ? datum + ".to_s.encode('#{options[:encoding]}', invalid: :replace, undef: :replace)" : datum) end headers end
columns_to_array(nature, options = {})
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 60 def columns_to_array(nature, options = {}) columns = table.exportable_columns array = [] record = options[:record] || 'record_of_the_death' for column in columns next unless column.is_a?(ActiveList::Definition::AbstractColumn) datum = if nature == :header column.header_code else column.exporting_datum_code(record) end array << (options[:encoding] ? datum + ".to_s.encode('#{options[:encoding]}', invalid: :replace, undef: :replace)" : datum) end array end
columns_to_hash()
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 77 def columns_to_hash table.exportable_columns.map do |column| [column.header_code, column.exporting_datum_code('record').to_s] end.to_h end
file_extension()
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 11 def file_extension 'txt' end
file_name_code()
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 15 def file_name_code "file_name = #{table.model.name}.model_name.human\n".c end
generate_data_code()
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 46 def generate_data_code raise NotImplementedError.new("#{self.class.name}#generate_data_code must be implemented in sub-classes.") end
generate_file_code(format)
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 23 def generate_file_code(format) code = file_name_code if generator.export_class code << generator.exportable_query_code code << "#{generator.export_class}.perform_later(user: current_user,\n" code << " query: query,\n" code << " content: #{columns_to_hash},\n" code << " file_name: file_name,\n" code << " format: '#{format}',\n" code << " file_extension: '#{file_extension}')\n" code << "notify_success(:document_in_preparation)\n" code << "redirect_to(:back)\n" else code << generate_data_code code << send_data_code end code.c end
mime_type()
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 19 def mime_type Mime::TEXT end
send_data_code()
click to toggle source
# File lib/active_list/exporters/abstract_exporter.rb, line 42 def send_data_code raise NotImplementedError.new("#{self.class.name}#send_data_code must be implemented in sub-classes.") end