Class: Redmine::Export::CSV::Base

Inherits:
CSV
  • Object
show all
Includes:
I18n
Defined in:
lib/redmine/export/csv.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from I18n

#abbr_day_name, #current_language, #day_letter, #day_name, #find_language, #format_date, #format_hours, #format_time, included, #l, #l_hours, #l_hours_short, #l_or_humanize, #languages_options, #ll, #lu, #month_name, #normalize_float, #set_language_if_valid, #valid_languages

Class Method Details

.generate(options = {}) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/redmine/export/csv.rb', line 33

def generate(options = {}, &)
  col_sep = (options[:field_separator].presence || l(:general_csv_separator))
  encoding = Encoding.find(options[:encoding]) rescue Encoding.find(l(:general_csv_encoding))

  str =
    if encoding == Encoding::UTF_8
      +"\xEF\xBB\xBF" # BOM
    else
      (+'').force_encoding(encoding)
    end

  super(str, :col_sep => col_sep, :encoding => encoding, &)
end

Instance Method Details

#<<(row) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/redmine/export/csv.rb', line 48

def <<(row)
  row = row.map do |field|
    case field
    when String
      Redmine::CodesetUtil.from_utf8(field, self.encoding.name)
    when Float
      @decimal_separator ||= l(:general_csv_decimal_separator)
      ("%.2f" % field).gsub('.', @decimal_separator)
    else
      field
    end
  end
  super
end