Skip to content

Commit fb69647

Browse files
committed
docs
1 parent ae8b5a8 commit fb69647

File tree

3 files changed

+45
-9
lines changed

3 files changed

+45
-9
lines changed

docs/value_converters.md

+20-5
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ If you use `key_mappings` and `value_converters`, make sure that the value conve
2121

2222
```ruby
2323
$ cat spec/fixtures/with_dates.csv
24-
first,last,date,price
25-
Ben,Miller,10/30/1998,$44.50
26-
Tom,Turner,2/1/2011,$15.99
27-
Ken,Smith,01/09/2013,$199.99
24+
first,last,date,price,member
25+
Ben,Miller,10/30/1998,$44.50,TRUE
26+
Tom,Turner,2/1/2011,$15.99,False
27+
Ken,Smith,01/09/2013,$199.99,true
2828

2929
$ irb
3030
> require 'smarter_csv'
@@ -51,7 +51,20 @@ If you use `key_mappings` and `value_converters`, make sure that the value conve
5151
end
5252
end
5353

54-
options = {:value_converters => {:date => DateConverter, :price => DollarConverter}}
54+
class BooleanConverter
55+
def self.convert(value)
56+
case value
57+
when /true/i
58+
true
59+
when /false/i
60+
false
61+
else
62+
nil
63+
end
64+
end
65+
end
66+
67+
options = {value_converters: {date: DateConverter, price: DollarConverter, member: BooleanConverter}}
5568
data = SmarterCSV.process("spec/fixtures/with_dates.csv", options)
5669
first_record = data.first
5770
first_record[:date]
@@ -62,6 +75,8 @@ If you use `key_mappings` and `value_converters`, make sure that the value conve
6275
=> 44.50
6376
first_record[:price].class
6477
=> Float
78+
first_record[:member]
79+
=> true
6580
```
6681

6782
--------------------

spec/features/converters/value_converters_spec.rb

+21
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,19 @@ def self.convert(value)
1515
end
1616
end
1717

18+
class BooleanConverter
19+
def self.convert(value)
20+
case value
21+
when /true/i
22+
true
23+
when /false/i
24+
false
25+
else
26+
nil
27+
end
28+
end
29+
end
30+
1831
describe ':value_converters option' do
1932
it 'convert date values into Date instances' do
2033
options = {value_converters: {date: DateConverter}}
@@ -49,4 +62,12 @@ def self.convert(value)
4962
expect(data[1][:price]).to eq 15.0
5063
expect(data[2][:price]).to eq 0.11
5164
end
65+
66+
it 'converts boolean values into true/false' do
67+
options = {value_converters: {member: BooleanConverter}}
68+
data = SmarterCSV.process("#{fixture_path}/with_dates.csv", options)
69+
expect(data.flatten.size).to eq 3
70+
expect(data[0][:member]).to eq true
71+
expect(data[1][:member]).to eq false
72+
end
5273
end

spec/fixtures/with_dates.csv

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
first,last,date,price
2-
Ben,Miller,10/30/1998,$44.50
3-
Tom,Turner,2/1/2011,$15
4-
Ken,Smith,01/09/2013,$0.11
1+
first,last,date,price,member
2+
Ben,Miller,10/30/1998,$44.50,TRUE
3+
Tom,Turner,2/1/2011,$15,False
4+
Ken,Smith,01/09/2013,$0.11,true

0 commit comments

Comments
 (0)