@@ -635,10 +635,21 @@ def ==(other)
635635 @row == other
636636 end
637637
638+ # :call-seq:
639+ # row.to_h -> hash
638640 #
639- # Collapses the row into a simple Hash. Be warned that this discards field
640- # order and clobbers duplicate fields.
641+ # Returns the new \Hash formed by adding each header-value pair in +self+
642+ # as a key-value pair in the \Hash.
643+ # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
644+ # table = CSV.parse(source, headers: true)
645+ # row = table[0]
646+ # row.to_h # => {"Name"=>"foo", "Value"=>"0"}
641647 #
648+ # Header order is preserved, but repeated headers are ignored:
649+ # source = "Name,Name,Name\nFoo,Bar,Baz\n"
650+ # table = CSV.parse(source, headers: true)
651+ # row = table[0]
652+ # row.to_h # => {"Name"=>"Foo"}
642653 def to_h
643654 hash = { }
644655 each do |key , _value |
@@ -650,20 +661,35 @@ def to_h
650661
651662 alias_method :to_ary , :to_a
652663
664+ # :call-seq:
665+ # row.to_csv -> csv_string
653666 #
654- # Returns the row as a CSV String. Headers are not used. Equivalent to:
655- #
656- # csv_row.fields.to_csv( options )
657- #
667+ # Returns the row as a \CSV String. Headers are not included:
668+ # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
669+ # table = CSV.parse(source, headers: true)
670+ # row = table[0]
671+ # row.to_csv # => "foo,0\n"
658672 def to_csv ( **options )
659673 fields . to_csv ( **options )
660674 end
661675 alias_method :to_s , :to_csv
662676
677+ # :call-seq:
678+ # row.dig(index_or_header, *identifiers) -> object
679+ #
680+ # Finds and returns the object in nested object that is specified
681+ # by +index_or_header+ and +specifiers+.
663682 #
664- # Extracts the nested value specified by the sequence of +index+ or +header+ objects by calling dig at each step,
665- # returning nil if any intermediate step is nil .
683+ # The nested objects may be instances of various classes.
684+ # See {Dig Methods}[https://docs.ruby-lang.org/en/master/doc/dig_methods_rdoc.html] .
666685 #
686+ # Examples:
687+ # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
688+ # table = CSV.parse(source, headers: true)
689+ # row = table[0]
690+ # row.dig(1) # => "0"
691+ # row.dig('Value') # => "0"
692+ # row.dig(5) # => nil
667693 def dig ( index_or_header , *indexes )
668694 value = field ( index_or_header )
669695 if value . nil?
@@ -678,9 +704,17 @@ def dig(index_or_header, *indexes)
678704 end
679705 end
680706
707+ # :call-seq:
708+ # row.inspect -> string
681709 #
682- # A summary of fields, by header, in an ASCII compatible String.
683- #
710+ # Returns an ASCII-compatible \String showing:
711+ # - Class \CSV::Row.
712+ # - Header-value pairs.
713+ # Example:
714+ # source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
715+ # table = CSV.parse(source, headers: true)
716+ # row = table[0]
717+ # row.inspect # => "#<CSV::Row \"Name\":\"foo\" \"Value\":\"0\">"
684718 def inspect
685719 str = [ "#<" , self . class . to_s ]
686720 each do |header , field |
0 commit comments