Sha256: f3b5bfe524c16479b77d6e5b65282295a60b1d610e0157794a095ef3ec1d0a05

Contents?: true

Size: 817 Bytes

Versions: 5

Compression:

Stored size: 817 Bytes

Contents

module Alf
  module CSV
    #
    # Implements Alf::Renderer contract for outputting CSV files. 
    #
    class Renderer < Alf::Renderer
      include CSV::Commons

      protected

      # (see Renderer#render)
      def render(input, output)
        csv = get_csv(output)
        header = nil
        input.each do |tuple|
          unless header 
            header = extract_header(tuple)
            csv << header.collect{|k| k.to_s}
          end
          csv << extract_row(tuple, header)
        end
        output
      end

      private

      def extract_header(tuple)
        tuple.keys
      end

      def extract_row(tuple, header)
        header.collect{|k| tuple[k]}
      end

      Alf::Renderer.register(:csv, "as a csv file", self)
    end # class Renderer
  end # module CSV
end # module Alf

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
alf-0.12.2 lib/alf-csv/alf/csv/renderer.rb
alf-0.12.1 lib/alf-csv/alf/csv/renderer.rb
alf-0.12.0 lib/alf-csv/alf/csv/renderer.rb
alf-0.11.1 lib/alf-csv/alf/csv/renderer.rb
alf-0.11.0 lib/alf-csv/alf/csv/renderer.rb