foodsoft/app/lib/render_csv.rb
Philipp Rothmann fb2b4d8a8a chore: rubocop
chore: fix api test conventions

chore: rubocop -A spec/

chore: more rubocop -A

fix failing test

rubocop fixes

removes helper methods that are in my opinion dead code

more rubocop fixes

rubocop -a --auto-gen-config
2023-06-09 17:35:05 +02:00

38 lines
1,008 B
Ruby

require 'csv'
class RenderCsv
include ActionView::Helpers::NumberHelper
def initialize(object, options = {})
@object = object
@options = options
# defaults to please Microsoft Excel ...
@options[:col_sep] ||= FoodsoftConfig[:csv_col_sep] || ';'
@options[:row_sep] ||= FoodsoftConfig[:csv_row_sep] if FoodsoftConfig[:csv_row_sep]
@options[:encoding] ||= FoodsoftConfig[:csv_encoding] || 'ISO-8859-15'
end
def to_csv
options = @options.select { |k| %w[col_sep row_sep].include? k.to_s }
ret = CSV.generate options do |csv|
if h = header
csv << h
end
data { |d| csv << d }
end
ret.encode(@options[:encoding], invalid: :replace, undef: :replace)
end
def header
nil
end
def data
yield []
end
# XXX disable unit to avoid encoding problems, both in unit and whitespace. Also allows computations in spreadsheet.
def number_to_currency(number, options = {})
super(number, options.merge({ unit: '' }))
end
end