class ActiveAdminCsvWithBom::Builder
Attributes
collection[R]
Public Class Methods
new(collection)
click to toggle source
# File lib/active_admin_csv_with_bom/builder.rb, line 12 def initialize(collection) @collection = collection end
Public Instance Methods
build()
click to toggle source
# File lib/active_admin_csv_with_bom/builder.rb, line 16 def build "".tap do |csv| csv << byte_order_mark csv << build_header collection.each do |record| csv << build_row(record) end end end
Private Instance Methods
build_header()
click to toggle source
# File lib/active_admin_csv_with_bom/builder.rb, line 29 def build_header CSV.generate_line(column_names.map { |name| encode(resource_class.human_attribute_name(name)) }, options) end
build_row(record)
click to toggle source
# File lib/active_admin_csv_with_bom/builder.rb, line 33 def build_row(record) CSV.generate_line(column_names.map { |name| encode(record.send(name)) }, options) end
column_names()
click to toggle source
# File lib/active_admin_csv_with_bom/builder.rb, line 41 def column_names @_column_names ||= resource_class.column_names rescue NoMethodError => _e raise NotImplementedError, "you must implement #{resource_class}.column_names" end
config()
click to toggle source
# File lib/active_admin_csv_with_bom/builder.rb, line 55 def config @_config ||= OpenStruct.new(::ActiveAdminCsvWithBom.csv_options) end
encode(value)
click to toggle source
# File lib/active_admin_csv_with_bom/builder.rb, line 47 def encode(value) value.to_s.encode(encoding, encoding_options) end
options()
click to toggle source
# File lib/active_admin_csv_with_bom/builder.rb, line 51 def options @_options ||= { col_sep: col_sep, row_sep: row_sep, force_quotes: force_quotes } end
resource_class()
click to toggle source
# File lib/active_admin_csv_with_bom/builder.rb, line 37 def resource_class @_resource_class ||= collection[0].class end