csv: yield to block on each cell

Closes #151

Related to #145
This commit is contained in:
Andy Meneely
2016-04-11 20:07:55 -04:00
parent 39346d53c2
commit 795b4e4478
5 changed files with 71 additions and 2 deletions
+29
View File
@@ -76,6 +76,35 @@ describe Squib::Deck do
})
end
it 'yields to block when given' do
data = Squib.csv(file: csv_file('basic.csv')) do |header, value|
case header
when 'h1'
value * 2
else
'ha'
end
end
expect(data).to eq({
'h1' => [2, 6],
'h2' => %w(ha ha),
})
end
it 'replaces newlines whenever its a string' do
data = Squib.csv(file: csv_file('yield.csv')) do |header, value|
if value.respond_to? :gsub
value.gsub '%n', "\n"
else
value
end
end
expect(data).to eq({
'a' => ["foo\nbar", 1],
'b' => [1, "blah\n"],
})
end
end
context '#xlsx' do
+3
View File
@@ -0,0 +1,3 @@
a,b
foo%nbar,1
1,blah%n
1 a b
2 foo%nbar 1
3 1 blah%n