Skip to content

Commit

Permalink
Implementation of CSV report.
Browse files Browse the repository at this point in the history
  • Loading branch information
eric committed Jul 18, 2008
1 parent a2072cb commit a0d0783
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pkg
1 change: 1 addition & 0 deletions lib/munger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
require 'munger/item'

require 'munger/render'
require 'munger/render/csv'
require 'munger/render/html'
require 'munger/render/sortable_html'
require 'munger/render/text'
Expand Down
31 changes: 31 additions & 0 deletions lib/munger/render/csv.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
module Munger
module Render
class CSV

attr_reader :report

def initialize(report)
@report = report
end

def render
output = []

# header
output << @report.columns.collect { |col| @report.column_title(col).to_s }.join(',')

# body
@report.process_data.each do |row|
output << @report.columns.collect { |col| row[:data][col].to_s }.join(',')
end

output.join("\n")
end

def valid?
@report.is_a? Munger::Report
end

end
end
end
21 changes: 21 additions & 0 deletions spec/spec_render_csv.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
require File.dirname(__FILE__) + "/spec_helper"

describe Munger::Render::CSV do
include MungerSpecHelper

before(:each) do
@data = Munger::Data.new(:data => test_data)
@report = Munger::Report.new(:data => @data)
end

it "should accept a Munger::Report object" do
Munger::Render::Text.new(@report.process).should be_valid
end

it "should render a basic text table" do
@render = Munger::Render::CSV.new(@report.process)
count = @report.rows
text = @render.render
text.split("\n").should have_at_least(count).items
end
end

0 comments on commit a0d0783

Please sign in to comment.