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 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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy