mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/csv] RDoc recipes for diagnostics (#186)
https://github.com/ruby/csv/commit/d9e67918e2
This commit is contained in:
parent
9266410c7a
commit
d48e688f64
Notes:
git
2020-11-24 09:34:26 +09:00
1 changed files with 34 additions and 0 deletions
|
@ -58,6 +58,9 @@ All code snippets on this page assume that the following has been executed:
|
|||
- {Using Multiple Header Converters}[#label-Using+Multiple+Header+Converters]
|
||||
- {Recipe: Specify Multiple Header Converters in Option :header_converters}[#label-Recipe-3A+Specify+Multiple+Header+Converters+in+Option+-3Aheader_converters]
|
||||
- {Recipe: Specify Multiple Header Converters in a Custom Header Converter List}[#label-Recipe-3A+Specify+Multiple+Header+Converters+in+a+Custom+Header+Converter+List]
|
||||
- {Diagnostics}[#label-Diagnostics]
|
||||
- {Recipe: Capture Unconverted Fields}[#label-Recipe-3A+Capture+Unconverted+Fields]
|
||||
- {Recipe: Capture Field Info}[#label-Recipe-3A+Capture+Field+Info]
|
||||
|
||||
=== Source Formats
|
||||
|
||||
|
@ -507,3 +510,34 @@ Apply multiple header converters by defining and registering a custom header con
|
|||
source = "NAME,VALUE\nfoo,0\nbar,1.0\nbaz,2.0\n"
|
||||
parsed = CSV.parse(source, headers: true, header_converters: :my_header_converters)
|
||||
parsed.headers # => [:name, :value]
|
||||
|
||||
=== Diagnostics
|
||||
|
||||
==== Recipe: Capture Unconverted Fields
|
||||
|
||||
To capture unconverted field values, use option +:unconverted_fields+:
|
||||
source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
|
||||
parsed = CSV.parse(source, converters: :integer, unconverted_fields: true)
|
||||
parsed # => [["foo", "0"], ["bar", "1"], ["baz", "2"]]
|
||||
parsed.each {|row| p row.unconverted_fields }
|
||||
Output:
|
||||
["Name", "Value"]
|
||||
["foo", "0"]
|
||||
["bar", "1"]
|
||||
["baz", "2"]
|
||||
|
||||
==== Recipe: Capture Field Info
|
||||
|
||||
To capture field info in a custom converter, accept two block arguments.
|
||||
The first is the field value; the second is a +CSV::FieldInfo+ object:
|
||||
strip_converter = proc {|field, field_info| p field_info; field.strip }
|
||||
source = " foo , 0 \n bar , 1 \n baz , 2 \n"
|
||||
parsed = CSV.parse(source, converters: strip_converter)
|
||||
parsed # => [["foo", "0"], ["bar", "1"], ["baz", "2"]]
|
||||
Output:
|
||||
#<struct CSV::FieldInfo index=0, line=1, header=nil>
|
||||
#<struct CSV::FieldInfo index=1, line=1, header=nil>
|
||||
#<struct CSV::FieldInfo index=0, line=2, header=nil>
|
||||
#<struct CSV::FieldInfo index=1, line=2, header=nil>
|
||||
#<struct CSV::FieldInfo index=0, line=3, header=nil>
|
||||
#<struct CSV::FieldInfo index=1, line=3, header=nil>
|
Loading…
Add table
Reference in a new issue