Sha256: 13ca31846157185d5c140bec87e78b4e11705938e16275570df47507ccf7d3da
Contents?: true
Size: 1.32 KB
Versions: 3
Compression:
Stored size: 1.32 KB
Contents
module AbAdmin module Utils # CSVBuilder stores CSV configuration # # Usage example: # # csv_builder = CSVBuilder.new # csv_builder.column :id # csv_builder.column("Name") { |resource| resource.full_name } # # csv_builder = CSVBuilder.new :separator => ";" # csv_builder.column :id # # class CSVBuilder # Return a default CSVBuilder for a resource # The CSVBuilder's columns would be Id followed by this # resource's content columns def self.default_for_resource(resource) new.tap do |csv_builder| csv_builder.column(:id) resource.content_columns.each do |content_column| csv_builder.column(content_column.name.to_sym) end end end attr_reader :columns, :column_separator def initialize(options={}, &block) @columns = [] @column_separator = options.delete(:separator) instance_eval &block if block_given? end # Add a column def column(name, &block) @columns << Column.new(name, block) end class Column attr_reader :name, :data def initialize(name, block = nil) @name = name.is_a?(Symbol) ? name.to_s.titleize : name @data = block || name.to_sym end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ab_admin-0.1.2 | lib/ab_admin/utils/csv_builder.rb |
ab_admin-0.1.1 | lib/ab_admin/utils/csv_builder.rb |
ab_admin-0.1.0 | lib/ab_admin/utils/csv_builder.rb |