8000 RDoc for converters (#157) · ruby/csv@6044976 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6044976

Browse files
BurdetteLamarkou
andauthored
RDoc for converters (#157)
* More on RDoc for converters * More on RDoc for converters * Fix indent Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
1 parent dbd860c commit 6044976

File tree

4 files changed

+484
-224
lines changed

4 files changed

+484
-224
lines changed
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
====== Option +write_converters+
22

3-
Specifies the \Proc or \Array of Procs that are to be called
4-
for converting each output field.
3+
Specifies converters to be used in generating fields.
4+
See {Write Converters}[#class-CSV-label-Write+Converters]
55

66
Default value:
77
CSV::DEFAULT_OPTIONS.fetch(:write_converters) # => nil
@@ -11,21 +11,23 @@ With no write converter:
1111
str # => "\"\na\n\",\tb\t, c \n"
1212

1313
With a write converter:
14-
strip_converter = lambda {|field| field.strip }
14+
strip_converter = proc {|field| field.strip }
1515
str = CSV.generate_line(["\na\n", "\tb\t", " c "], write_converters: strip_converter)
1616
str # => "a,b,c\n"
1717

1818
With two write converters (called in order):
19-
upcase_converter = lambda {|field| field.upcase }
20-
downcase_converter = lambda {|field| field.downcase }
19+
upcase_converter = proc {|field| field.upcase }
20+
downcase_converter = proc {|field| field.downcase }
2121
write_converters = [upcase_converter, downcase_converter]
2222
str = CSV.generate_line(['a', 'b', 'c'], write_converters: write_converters)
2323
str # => "a,b,c\n"
2424

25+
See also {Write Converters}[#class-CSV-label-Write+Converters]
26+
2527
---
2628

2729
Raises an exception if the converter returns a value that is neither +nil+
2830
nor \String-convertible:
29-
bad_converter = lambda {|field| BasicObject.new }
31+
bad_converter = proc {|field| BasicObject.new }
3032
# Raises NoMethodError (undefined method `is_a?' for #<BasicObject:>)
3133
CSV.generate_line(['a', 'b', 'c'], write_converters: bad_converter)

doc/options/parsing/converters.rdoc

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,42 @@
11
====== Option +converters+
22

3-
Specifies a single field converter name or \Proc,
4-
or an \Array of field converter names and Procs.
5-
3+
Specifies converters to be used in parsing fields.
64
See {Field Converters}[#class-CSV-label-Field+Converters]
75

86
Default value:
97
CSV::DEFAULT_OPTIONS.fetch(:converters) # => nil
108

11-
The value may be a single field converter name:
9+
The value may be a field converter name
10+
(see {Stored Converters}[#class-CSV-label-Stored+Converters]):
1211
str = '1,2,3'
1312
# Without a converter
14-
ary = CSV.parse_line(str)
15-
ary # => ["1", "2", "3"]
13+
array = CSV.parse_line(str)
14+
array # => ["1", "2", "3"]
1615
# With built-in converter :integer
17-
ary = CSV.parse_line(str, converters: :integer)
18-
ary # => [1, 2, 3]
16+
array = CSV.parse_line(str, converters: :integer)
17+
array # => [1, 2, 3]
1918

20-
The value may be an \Array of field converter names:
19+
The value may be a converter list
20+
(see {Converter Lists}[#class-CSV-label-Converter+Lists]):
2121
str = '1,3.14159'
2222
# Without converters
23-
ary = CSV.parse_line(str)
24-
ary # => ["1", "3.14159"]
23+
array = CSV.parse_line(str)
24+
array # => ["1", "3.14159"]
2525
# With built-in converters
26-
ary = CSV.parse_line(str, converters: [:integer, :float])
27-
ary # => [1, 3.14159]
26+
array = CSV.parse_line(str, converters: [:integer, :float])
27+
array # => [1, 3.14159]
2828

2929
The value may be a \Proc custom converter:
30+
(see {Custom Field Converters}[#class-CSV-label-Custom+Field+Converters]):
3031
str = ' foo , bar , baz '
3132
# Without a converter
32-
ary = CSV.parse_line(str)
33-
ary # => [" foo ", " bar ", " baz "]
33+
array = CSV.parse_line(str)
34+
array # => [" foo ", " bar ", " baz "]
3435
# With a custom converter
35-
ary = CSV.parse_line(str, converters: proc {|field| field.strip })
36-
ary # => ["foo", "bar", "baz"]
36+
array = CSV.parse_line(str, converters: proc {|field| field.strip })
37+
array # => ["foo", "bar", "baz"]
3738

38-
See also {Custom Converters}[#class-CSV-label-Custom+Converters]
39+
See also {Custom Field Converters}[#class-CSV-label-Custom+Field+Converters]
3940

4041
---
4142

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
====== Option +header_converters+
22

3-
Specifies a \String converter name or an \Array of converter names.
3+
Specifies converters to be used in parsing headers.
4+
See {Header Converters}[#class-CSV-label-Header+Converters]
45

56
Default value:
67
CSV::DEFAULT_OPTIONS.fetch(:header_converters) # => nil
@@ -10,22 +11,33 @@ except that:
1011
- The converters apply only to the header row.
1112
- The built-in header converters are +:downcase+ and +:symbol+.
1213

13-
Examples:
14+
This section assumes prior execution of:
1415
str = <<-EOT
16+
Name,Value
1517
foo,0
1618
bar,1
1719
baz,2
1820
EOT
19-
headers = ['Name', 'Value']
2021
# With no header converter
21-
csv = CSV.parse(str, headers: headers)
22-
csv.headers # => ["Name", "Value"]
23-
# With header 9E88 converter :downcase
24-
csv = CSV.parse(str, headers: headers, header_converters: :downcase)
25-
csv.headers # => ["name", "value"]
26-
# With header converter :symbol
27-
csv = CSV.parse(str, headers: headers, header_converters: :symbol)
28-
csv.headers # => [:name, :value]
29-
# With both
30-
csv = CSV.parse(str, headers: headers, header_converters: [:downcase, :symbol])
31-
csv.headers # => [:name, :value]
22+
table = CSV.parse(str, headers: true)
23+
table.headers # => ["Name", "Value"]
24+
25+
The value may be a header converter name
26+
(see {Stored Converters}[#class-CSV-label-Stored+Converters]):
27+
table = CSV.parse(str, headers: true, header_converters: :downcase)
28+
table.headers # => ["name", "value"]
29+
30+
The value may be a converter list
31+
(see {Converter Lists}[#class-CSV-label-Converter+Lists]):
32+
header_converters = [:downcase, :symbol]
33+
table = CSV.parse(str, headers: true, header_converters: header_converters)
34+
table.headers # => [:name, :value]
35+
36+
The value may be a \Proc custom converter
37+
(see {Custom Header Converters}[#class-CSV-label-Custom+Header+Converters]):
38+
upcase_converter = proc {|field| field.upcase }
39+
table = CSV.parse(str, headers: true, header_converters: upcase_converter)
40+
table.headers # => ["NAME", "VALUE"]
41+
42+
See also {Custom Header Converters}[#class-CSV-label-Custom+Header+Converters]
43+

0 commit comments

Comments
 (0)
0