Sha256: 5d7e0d1680fe66abf636f2cfa003ec2db2d0fc6c91d19b2fdcd06bc2d201aefa

Contents?: true

Size: 1.18 KB

Versions: 12

Compression:

Stored size: 1.18 KB

Contents

module ActiveAdmin
  # 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 :col_sep => ";"
  #   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, :options

    def initialize(options={}, &block)
      @columns, @options = [], options
      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

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
activeadmin-0.6.6 lib/active_admin/csv_builder.rb
activeadmin-0.6.5 lib/active_admin/csv_builder.rb
activeadmin-0.6.4 lib/active_admin/csv_builder.rb
yousty-activeadmin-1.0.4.pre lib/active_admin/csv_builder.rb
yousty-activeadmin-1.0.3.pre lib/active_admin/csv_builder.rb
yousty-activeadmin-1.0.2.pre lib/active_admin/csv_builder.rb
activeadmin-0.6.3 lib/active_admin/csv_builder.rb
yousty-activeadmin-1.0.1.pre lib/active_admin/csv_builder.rb
yousty-activeadmin-1.0.0.pre lib/active_admin/csv_builder.rb
activeadmin-0.6.2 lib/active_admin/csv_builder.rb
activeadmin-0.6.1 lib/active_admin/csv_builder.rb
aa-rails4-0.6.0 lib/active_admin/csv_builder.rb