Sha256: 8dbd25ddc18ad799a37fc451eb2831acc753cda9bbb202f2c2812af11b0fee3a

Contents?: true

Size: 711 Bytes

Versions: 1

Compression:

Stored size: 711 Bytes

Contents

require 'csv'

module Julia
  class Builder
    attr_reader :collection, :csv_options

    def initialize(collection, csv_options = Hash.new)
      @collection, @csv_options = collection, csv_options
    end

    def self.columns
      @columns ||= {}
    end

    def self.column(keyname, action = nil, &block)
      self.columns[keyname] = Action.new(keyname, action, &block)
    end

    def build
      CSV.generate(csv_options) do |csv|
        csv << columns.keys

        collection.each do |record|
          csv << columns.values.map do |action|
            action.get_value(record)
          end
        end
      end
    end

    protected

    def columns
      self.class.columns
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
julia_builder-0.1.3 lib/julia/builder.rb