elskwid-munger 0.1.4.1 → 0.1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +1 -0
- data/lib/munger/data.rb +6 -6
- data/lib/munger/render/csv.rb +9 -3
- data/munger.gemspec +1 -1
- data/spec/munger/item_spec.rb +6 -0
- data/spec/munger/render/csv_spec.rb +8 -2
- data/spec/spec_helper.rb +2 -1
- metadata +3 -3
data/Rakefile
CHANGED
data/lib/munger/data.rb
CHANGED
@@ -63,7 +63,7 @@ module Munger #:nodoc:
|
|
63
63
|
else
|
64
64
|
row[names] = col_data
|
65
65
|
end
|
66
|
-
@data[index] =
|
66
|
+
@data[index] = clean_data(row)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
alias :add_columns :add_column
|
@@ -169,16 +169,16 @@ module Munger #:nodoc:
|
|
169
169
|
|
170
170
|
data_hash.each do |row_key, row_hash|
|
171
171
|
new_row = {}
|
172
|
-
row_hash.each do |column_key,
|
172
|
+
row_hash.each do |column_key, row_data|
|
173
173
|
column_key.each do |ckey|
|
174
|
-
new_row.merge!(
|
174
|
+
new_row.merge!(row_data[:data])
|
175
175
|
case aggregation
|
176
176
|
when :average
|
177
|
-
new_row[ckey] = (
|
177
|
+
new_row[ckey] = (row_data[:sum] / row_data[:count])
|
178
178
|
when :count
|
179
|
-
new_row[ckey] =
|
179
|
+
new_row[ckey] = row_data[:count]
|
180
180
|
else
|
181
|
-
new_row[ckey] =
|
181
|
+
new_row[ckey] = row_data[:sum]
|
182
182
|
end
|
183
183
|
new_keys[ckey] = true
|
184
184
|
end
|
data/lib/munger/render/csv.rb
CHANGED
@@ -12,11 +12,11 @@ module Munger #:nodoc:
|
|
12
12
|
output = []
|
13
13
|
|
14
14
|
# header
|
15
|
-
output << @report.columns.collect { |col| @report.column_title(col)
|
15
|
+
output << @report.columns.collect { |col| quote(@report.column_title(col)) }.join(',')
|
16
16
|
|
17
17
|
# body
|
18
18
|
@report.process_data.each do |row|
|
19
|
-
output << @report.columns.collect { |col| row[:data][col]
|
19
|
+
output << @report.columns.collect { |col| quote(row[:data][col]) }.join(',')
|
20
20
|
end
|
21
21
|
|
22
22
|
output.join("\n")
|
@@ -25,7 +25,13 @@ module Munger #:nodoc:
|
|
25
25
|
def valid?
|
26
26
|
@report.is_a? Munger::Report
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
# quote data if it contains a comma
|
32
|
+
def quote(data)
|
33
|
+
data.to_s.include?(',') ? "\"#{data}\"" : "#{data}"
|
34
|
+
end
|
29
35
|
end
|
30
36
|
end
|
31
37
|
end
|
data/munger.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.platform = Gem::Platform::RUBY
|
3
3
|
s.name = "elskwid-munger"
|
4
|
-
s.version = "0.1.4.
|
4
|
+
s.version = "0.1.4.2"
|
5
5
|
s.authors = ['Scott Chacon', 'Brandon Mitchell', 'Don Morrison', 'Eric Lindvall']
|
6
6
|
s.email = "elskwid@gmail.com"
|
7
7
|
s.summary = "A reporting engine in Ruby - the elskwid fork!"
|
data/spec/munger/item_spec.rb
CHANGED
@@ -34,4 +34,10 @@ describe Munger::Item do
|
|
34
34
|
item['key1'].should eql('value1')
|
35
35
|
item[:key2].should eql('value2')
|
36
36
|
end
|
37
|
+
|
38
|
+
it "should return a hash after being initialized with a hash" do
|
39
|
+
hash = {:key1 => "value1", :key2 => "value2"}
|
40
|
+
Munger::Item.ensure(hash).to_hash.should be_kind_of(Hash)
|
41
|
+
end
|
42
|
+
|
37
43
|
end
|
@@ -3,8 +3,8 @@ require File.dirname(__FILE__) + "/../../spec_helper"
|
|
3
3
|
describe Munger::Render::CSV do
|
4
4
|
include MungerSpecHelper
|
5
5
|
|
6
|
-
before(:each) do
|
7
|
-
@data = Munger::Data.new(:data => test_data)
|
6
|
+
before(:each) do
|
7
|
+
@data = Munger::Data.new(:data => test_data + [{:name => 'Comma, Guy', :age => 100, :day => 0, :score => 0}])
|
8
8
|
@report = Munger::Report.new(:data => @data)
|
9
9
|
end
|
10
10
|
|
@@ -18,4 +18,10 @@ describe Munger::Render::CSV do
|
|
18
18
|
text = @render.render
|
19
19
|
text.split("\n").should have_at_least(count).items
|
20
20
|
end
|
21
|
+
|
22
|
+
it "should quote data with commas" do
|
23
|
+
@render = Munger::Render::CSV.new(@report.process)
|
24
|
+
text = @render.render
|
25
|
+
text.should match /"Comma, Guy"/
|
26
|
+
end
|
21
27
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,6 +5,7 @@ require 'spec'
|
|
5
5
|
require 'fileutils'
|
6
6
|
require 'logger'
|
7
7
|
require 'pp'
|
8
|
+
require 'date'
|
8
9
|
|
9
10
|
require 'rspec_hpricot_matchers'
|
10
11
|
Spec::Runner.configure do |config|
|
@@ -22,7 +23,7 @@ module MungerSpecHelper
|
|
22
23
|
{:name => 'Scott', :age => 23, :day => 1, :score => 31},
|
23
24
|
{:name => 'Alice', :age => 33, :day => 1, :score => 12},
|
24
25
|
{:name => 'Alice', :age => 34, :day => 2, :score => 12},
|
25
|
-
{:name => 'Alice', :age => 33, :day => 2, :score => 12}
|
26
|
+
{:name => 'Alice', :age => 33, :day => 2, :score => 12}
|
26
27
|
]
|
27
28
|
end
|
28
29
|
|
metadata
CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 0
|
7
7
|
- 1
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.1.4.
|
9
|
+
- 2
|
10
|
+
version: 0.1.4.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Scott Chacon
|
@@ -18,7 +18,7 @@ autorequire:
|
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
20
|
|
21
|
-
date: 2010-04-
|
21
|
+
date: 2010-04-06 00:00:00 -07:00
|
22
22
|
default_executable:
|
23
23
|
dependencies: []
|
24
24
|
|