Class: Array
- Inherits:
-
Object
- Object
- Array
- Defined in:
- lib/fat_free_crm/core_ext/array.rb
Instance Method Summary collapse
-
#to_csv ⇒ Object
CSV export.
-
#to_xls ⇒ Object
XLS export.
Instance Method Details
#to_csv ⇒ Object
CSV export. Based on to_csv Rails plugin by Ary Djmal github.com/arydjmal/to_csv
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/fat_free_crm/core_ext/array.rb', line 56 def to_csv return '' if empty? klass = first.class columns = klass.columns.map(&:name).reject { |column| column =~ /password|token/ } CSV.generate do |csv| csv << columns.map { |column| klass.human_attribute_name(column) } each do |item| csv << columns.map { |column| item.send(column) } end end end |
#to_xls ⇒ Object
XLS export. Based on to_xls Rails plugin by Ary Djmal github.com/arydjmal/to_xls
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/fat_free_crm/core_ext/array.rb', line 23 def to_xls output = '<?xml version="1.0" encoding="UTF-8"?><Workbook xmlns:x="urn:schemas-microsoft-com:office:excel"' output << ' xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"' output << ' xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office">' output << '<Worksheet ss:Name="Sheet1"><Table>' if any? klass = first.class columns = klass.columns.map(&:name).reject { |column| column =~ /deleted_at|password|token/ } output << columns.map do |column| klass.human_attribute_name(column).wrap('<Cell><Data ss:Type="String">', '</Data></Cell>') end.join.wrap('<Row>', '</Row>') each do |item| output << columns.map do |column| value = if column =~ /^(user_id|assigned_to|completed_by)$/ && item.respond_to?(:"#{$1}_full_name") item.send(:"#{$1}_full_name") else item.send(column) end value = value.to_a.join(',') if [Set, Array].include?(value.class) value.to_s.wrap(%Q|<Cell><Data ss:Type="#{value.respond_to?(:abs) ? 'Number' : 'String'}">|, '</Data></Cell>') end.join.wrap('<Row>', '</Row>') end end output << '</Table></Worksheet></Workbook>' end |