brakeman 6.2.2 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +26 -0
  3. data/README.md +1 -1
  4. data/bundle/load.rb +10 -8
  5. data/bundle/ruby/3.1.0/gems/csv-3.3.3/LICENSE.txt +33 -0
  6. data/bundle/ruby/3.1.0/gems/csv-3.3.3/NEWS.md +990 -0
  7. data/bundle/ruby/3.1.0/gems/csv-3.3.3/README.md +55 -0
  8. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/core_ext/array.rb +9 -0
  9. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/core_ext/string.rb +9 -0
  10. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/fields_converter.rb +96 -0
  11. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/input_record_separator.rb +18 -0
  12. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/parser.rb +1302 -0
  13. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/row.rb +757 -0
  14. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/table.rb +1055 -0
  15. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/version.rb +6 -0
  16. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/writer.rb +209 -0
  17. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv.rb +3017 -0
  18. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/Changelog.md +4 -0
  19. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/Gemfile +1 -0
  20. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/list_renderer.rb +2 -2
  21. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/menu.rb +7 -5
  22. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/version.rb +1 -1
  23. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline.rb +17 -12
  24. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/config.rb +22 -26
  25. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/history.rb +3 -3
  26. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/io/ansi.rb +64 -111
  27. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/io/dumb.rb +16 -2
  28. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/io/windows.rb +77 -60
  29. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/io.rb +14 -0
  30. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/base.rb +10 -4
  31. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/emacs.rb +96 -96
  32. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/vi_command.rb +182 -182
  33. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/vi_insert.rb +137 -137
  34. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_stroke.rb +26 -16
  35. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/line_editor.rb +238 -404
  36. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/unicode.rb +415 -0
  37. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/version.rb +3 -0
  38. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline.rb +18 -18
  39. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/NEWS.md +74 -0
  40. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/baseparser.rb +78 -48
  41. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/pullparser.rb +4 -0
  42. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/rexml.rb +1 -1
  43. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/source.rb +61 -6
  44. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/text.rb +15 -40
  45. data/bundle/ruby/3.1.0/gems/{ruby2ruby-2.5.1 → ruby2ruby-2.5.2}/History.rdoc +6 -0
  46. data/bundle/ruby/3.1.0/gems/{ruby2ruby-2.5.1 → ruby2ruby-2.5.2}/lib/ruby2ruby.rb +7 -4
  47. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/History.rdoc +6 -0
  48. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/sexp.rb +1 -1
  49. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/sexp_processor.rb +1 -1
  50. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/History.rdoc +149 -0
  51. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/README.md +417 -0
  52. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/cell.rb +9 -9
  53. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/row.rb +18 -4
  54. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/lib/terminal-table/separator.rb +66 -0
  55. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/lib/terminal-table/style.rb +284 -0
  56. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/table.rb +49 -18
  57. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/lib/terminal-table/util.rb +13 -0
  58. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/version.rb +1 -1
  59. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table.rb +2 -2
  60. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/terminal-table.gemspec +3 -4
  61. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/creole.rb +2 -0
  62. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/liquid.rb +0 -3
  63. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/mapping.rb +3 -3
  64. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/rdoc.rb +0 -8
  65. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/template.rb +178 -27
  66. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt.rb +9 -4
  67. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/CHANGELOG.md +291 -0
  68. data/bundle/ruby/3.1.0/gems/{unicode-display_width-1.8.0 → unicode-display_width-3.1.4}/MIT-LICENSE.txt +1 -1
  69. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/README.md +194 -0
  70. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/data/display_width.marshal.gz +0 -0
  71. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/constants.rb +10 -0
  72. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/emoji_support.rb +52 -0
  73. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/index.rb +34 -0
  74. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/no_string_ext.rb +8 -0
  75. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/reline_ext.rb +14 -0
  76. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/string_ext.rb +9 -0
  77. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width.rb +247 -0
  78. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/CHANGELOG.md +191 -0
  79. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/CODE_OF_CONDUCT.md +74 -0
  80. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/Gemfile +7 -0
  81. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/Gemfile.lock +33 -0
  82. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/MIT-LICENSE.txt +20 -0
  83. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/README.md +205 -0
  84. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/data/emoji.marshal.gz +0 -0
  85. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/data/generate_constants.rb +344 -0
  86. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/constants.rb +49 -0
  87. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex.rb +8 -0
  88. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_basic.rb +8 -0
  89. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_emoji_keycap.rb +8 -0
  90. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe.rb +8 -0
  91. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe_uqe.rb +8 -0
  92. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_text.rb +8 -0
  93. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto.rb +8 -0
  94. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto_no_emoji.rb +8 -0
  95. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_possible.rb +8 -0
  96. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_component.rb +8 -0
  97. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_emoji.rb +8 -0
  98. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_modifier.rb +8 -0
  99. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_modifier_base.rb +8 -0
  100. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_presentation.rb +8 -0
  101. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_text.rb +8 -0
  102. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_text_presentation.rb +8 -0
  103. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid.rb +8 -0
  104. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid_include_text.rb +8 -0
  105. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed.rb +8 -0
  106. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed_include_text.rb +8 -0
  107. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex.rb +8 -0
  108. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_basic.rb +8 -0
  109. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_emoji_keycap.rb +8 -0
  110. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe.rb +8 -0
  111. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe_uqe.rb +8 -0
  112. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_text.rb +8 -0
  113. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_picto.rb +8 -0
  114. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_picto_no_emoji.rb +8 -0
  115. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_possible.rb +8 -0
  116. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_component.rb +8 -0
  117. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_emoji.rb +8 -0
  118. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_modifier.rb +8 -0
  119. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_modifier_base.rb +8 -0
  120. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_presentation.rb +8 -0
  121. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_text.rb +8 -0
  122. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_text_presentation.rb +8 -0
  123. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_valid.rb +8 -0
  124. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_valid_include_text.rb +8 -0
  125. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_well_formed.rb +8 -0
  126. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_well_formed_include_text.rb +8 -0
  127. data/bundle/ruby/3.1.0/gems/{unicode-display_width-1.8.0/lib/unicode/display_width → unicode-emoji-4.0.4/lib/unicode/emoji}/index.rb +5 -3
  128. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/lazy_constants.rb +56 -0
  129. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/list.rb +13 -0
  130. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji.rb +111 -0
  131. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/unicode-emoji.gemspec +22 -0
  132. data/lib/brakeman/app_tree.rb +29 -19
  133. data/lib/brakeman/checks/check_deserialize.rb +4 -1
  134. data/lib/brakeman/checks/check_evaluation.rb +45 -8
  135. data/lib/brakeman/checks/check_model_attr_accessible.rb +1 -0
  136. data/lib/brakeman/checks/check_weak_rsa_key.rb +1 -1
  137. data/lib/brakeman/file_parser.rb +2 -1
  138. data/lib/brakeman/options.rb +12 -5
  139. data/lib/brakeman/processors/alias_processor.rb +9 -4
  140. data/lib/brakeman/processors/lib/file_type_detector.rb +9 -7
  141. data/lib/brakeman/report/ignore/config.rb +0 -1
  142. data/lib/brakeman/report/report_sarif.rb +122 -2
  143. data/lib/brakeman/rescanner.rb +40 -390
  144. data/lib/brakeman/scanner.rb +84 -51
  145. data/lib/brakeman/tracker/file_cache.rb +83 -0
  146. data/lib/brakeman/tracker.rb +19 -2
  147. data/lib/brakeman/version.rb +1 -1
  148. data/lib/brakeman.rb +19 -2
  149. metadata +265 -199
  150. data/bundle/ruby/3.1.0/gems/reline-0.5.10/lib/reline/terminfo.rb +0 -158
  151. data/bundle/ruby/3.1.0/gems/reline-0.5.10/lib/reline/unicode.rb +0 -671
  152. data/bundle/ruby/3.1.0/gems/reline-0.5.10/lib/reline/version.rb +0 -3
  153. data/bundle/ruby/3.1.0/gems/terminal-table-1.8.0/History.rdoc +0 -85
  154. data/bundle/ruby/3.1.0/gems/terminal-table-1.8.0/README.rdoc +0 -247
  155. data/bundle/ruby/3.1.0/gems/terminal-table-1.8.0/lib/terminal-table/separator.rb +0 -14
  156. data/bundle/ruby/3.1.0/gems/terminal-table-1.8.0/lib/terminal-table/style.rb +0 -79
  157. data/bundle/ruby/3.1.0/gems/tilt-2.4.0/lib/tilt/erubis.rb +0 -51
  158. data/bundle/ruby/3.1.0/gems/tilt-2.4.0/lib/tilt/maruku.rb +0 -10
  159. data/bundle/ruby/3.1.0/gems/tilt-2.4.0/lib/tilt/wikicloth.rb +0 -12
  160. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/CHANGELOG.md +0 -137
  161. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/README.md +0 -124
  162. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/data/display_width.marshal.gz +0 -0
  163. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/constants.rb +0 -8
  164. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/no_string_ext.rb +0 -7
  165. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/string_ext.rb +0 -17
  166. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width.rb +0 -51
  167. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/AUTHORS +0 -0
  168. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/COPYING +0 -0
  169. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/LICENSE +0 -0
  170. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/README.md +0 -0
  171. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/TODO +0 -0
  172. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/highline.gemspec +0 -0
  173. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/builtin_styles.rb +0 -0
  174. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/color_scheme.rb +0 -0
  175. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/compatibility.rb +0 -0
  176. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/custom_errors.rb +0 -0
  177. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/import.rb +0 -0
  178. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/io_console_compatible.rb +0 -0
  179. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/list.rb +0 -0
  180. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/menu/item.rb +0 -0
  181. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/paginator.rb +0 -0
  182. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/question/answer_converter.rb +0 -0
  183. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/question.rb +0 -0
  184. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/question_asker.rb +0 -0
  185. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/simulate.rb +0 -0
  186. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/statement.rb +0 -0
  187. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/string.rb +0 -0
  188. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/string_extensions.rb +0 -0
  189. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/style.rb +0 -0
  190. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/template_renderer.rb +0 -0
  191. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/terminal/io_console.rb +0 -0
  192. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/terminal/ncurses.rb +0 -0
  193. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/terminal/unix_stty.rb +0 -0
  194. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/terminal.rb +0 -0
  195. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/wrapper.rb +0 -0
  196. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/BSDL +0 -0
  197. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/COPYING +0 -0
  198. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/README.md +0 -0
  199. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/face.rb +0 -0
  200. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/composite.rb +0 -0
  201. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor.rb +0 -0
  202. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/kill_ring.rb +0 -0
  203. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/unicode/east_asian_width.rb +0 -0
  204. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/license_of_rb-readline +0 -0
  205. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/LICENSE.txt +0 -0
  206. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/README.md +0 -0
  207. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/attlistdecl.rb +0 -0
  208. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/attribute.rb +0 -0
  209. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/cdata.rb +0 -0
  210. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/child.rb +0 -0
  211. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/comment.rb +0 -0
  212. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/doctype.rb +0 -0
  213. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/document.rb +0 -0
  214. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/attlistdecl.rb +0 -0
  215. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/dtd.rb +0 -0
  216. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/elementdecl.rb +0 -0
  217. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/entitydecl.rb +0 -0
  218. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/notationdecl.rb +0 -0
  219. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/element.rb +0 -0
  220. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/encoding.rb +0 -0
  221. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/entity.rb +0 -0
  222. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/formatters/default.rb +0 -0
  223. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/formatters/pretty.rb +0 -0
  224. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/formatters/transitive.rb +0 -0
  225. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/functions.rb +0 -0
  226. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/instruction.rb +0 -0
  227. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/light/node.rb +0 -0
  228. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/namespace.rb +0 -0
  229. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/node.rb +0 -0
  230. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/output.rb +0 -0
  231. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parent.rb +0 -0
  232. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parseexception.rb +0 -0
  233. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/lightparser.rb +0 -0
  234. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/sax2parser.rb +0 -0
  235. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/streamparser.rb +0 -0
  236. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/treeparser.rb +0 -0
  237. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/ultralightparser.rb +0 -0
  238. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/xpathparser.rb +0 -0
  239. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/quickpath.rb +0 -0
  240. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/sax2listener.rb +0 -0
  241. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/security.rb +0 -0
  242. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/streamlistener.rb +0 -0
  243. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/undefinednamespaceexception.rb +0 -0
  244. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/validation/relaxng.rb +0 -0
  245. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/validation/validation.rb +0 -0
  246. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/validation/validationexception.rb +0 -0
  247. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/xmldecl.rb +0 -0
  248. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/xmltokens.rb +0 -0
  249. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/xpath.rb +0 -0
  250. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/xpath_parser.rb +0 -0
  251. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml.rb +0 -0
  252. /data/bundle/ruby/3.1.0/gems/{ruby2ruby-2.5.1 → ruby2ruby-2.5.2}/Manifest.txt +0 -0
  253. /data/bundle/ruby/3.1.0/gems/{ruby2ruby-2.5.1 → ruby2ruby-2.5.2}/README.rdoc +0 -0
  254. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/Manifest.txt +0 -0
  255. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/README.rdoc +0 -0
  256. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/composite_sexp_processor.rb +0 -0
  257. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/pt_testcase.rb +0 -0
  258. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/sexp_matcher.rb +0 -0
  259. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/strict_sexp.rb +0 -0
  260. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/unique.rb +0 -0
  261. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/Gemfile +0 -0
  262. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/LICENSE.txt +0 -0
  263. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/Manifest +0 -0
  264. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/Todo.rdoc +0 -0
  265. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/import.rb +0 -0
  266. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/table_helper.rb +0 -0
  267. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/COPYING +0 -0
  268. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/_emacs_org.rb +0 -0
  269. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/_handlebars.rb +0 -0
  270. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/_jbuilder.rb +0 -0
  271. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/_org.rb +0 -0
  272. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/asciidoc.rb +0 -0
  273. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/babel.rb +0 -0
  274. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/builder.rb +0 -0
  275. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/cli.rb +0 -0
  276. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/coffee.rb +0 -0
  277. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/commonmarker.rb +0 -0
  278. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/csv.rb +0 -0
  279. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/erb.rb +0 -0
  280. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/erubi.rb +0 -0
  281. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/etanni.rb +0 -0
  282. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/haml.rb +0 -0
  283. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/kramdown.rb +0 -0
  284. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/livescript.rb +0 -0
  285. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/markaby.rb +0 -0
  286. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/nokogiri.rb +0 -0
  287. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/pandoc.rb +0 -0
  288. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/pipeline.rb +0 -0
  289. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/plain.rb +0 -0
  290. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/prawn.rb +0 -0
  291. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/radius.rb +0 -0
  292. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/rdiscount.rb +0 -0
  293. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/redcarpet.rb +0 -0
  294. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/redcloth.rb +0 -0
  295. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/rst-pandoc.rb +0 -0
  296. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/sass.rb +0 -0
  297. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/slim.rb +0 -0
  298. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/string.rb +0 -0
  299. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/typescript.rb +0 -0
  300. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/yajl.rb +0 -0
@@ -0,0 +1,990 @@
1
+ # News
2
+
3
+ ## 3.3.3 - 2025-03-20
4
+
5
+ ### Improvements
6
+
7
+ * `csv-filter`: Add an experimental command line tool to filter a CSV.
8
+ * Patch by Burdette Lamar
9
+
10
+ ### Fixes
11
+
12
+ * Fixed wrong EOF detection for `ARGF`
13
+ * GH-328
14
+ * Reported by Takeshi Nishimatsu
15
+
16
+ * Fixed a regression bug that `CSV.open` rejects integer mode.
17
+ * GH-336
18
+ * Reported by Dave Burgess
19
+
20
+ ### Thanks
21
+
22
+ * Takeshi Nishimatsu
23
+
24
+ * Burdette Lamar
25
+
26
+ * Dave Burgess
27
+
28
+ ## 3.3.2 - 2024-12-21
29
+
30
+ ### Fixes
31
+
32
+ * Fixed a parse bug with a quoted line with `col_sep` and an empty
33
+ line. This was introduced in 3.3.1.
34
+ * GH-324
35
+ * Reported by stoodfarback
36
+
37
+ ### Thanks
38
+
39
+ * stoodfarback
40
+
41
+ ## 3.3.1 - 2024-12-15
42
+
43
+ ### Improvements
44
+
45
+ * `CSV.open`: Changed to detect BOM by default. Note that this isn't
46
+ enabled on Windows because Ruby may have a bug. See also:
47
+ https://bugs.ruby-lang.org/issues/20526
48
+ * GH-301
49
+ * Reported by Junichi Ito
50
+
51
+ * Improved performance.
52
+ * GH-311
53
+ * GH-312
54
+ * Patch by Vladimir Kochnev
55
+
56
+ * `CSV.open`: Added support for `StringIO` as an input.
57
+ * GH-300
58
+ * GH-302
59
+ * Patch by Marcelo
60
+
61
+ * Added a built-in time converter. You can use it by `converters:
62
+ :time`.
63
+ * GH-313
64
+ * Patch by Bart de Water
65
+
66
+ * Added `CSV::TSV` for tab-separated values.
67
+ * GH-272
68
+ * GH-319
69
+ * Reported by kojix2
70
+ * Patch by Jas
71
+
72
+ ### Thanks
73
+
74
+ * Junichi Ito
75
+
76
+ * Vladimir Kochnev
77
+
78
+ * Marcelo
79
+
80
+ * Bart de Water
81
+
82
+ * kojix2
83
+
84
+ * Jas
85
+
86
+ ## 3.3.0 - 2024-03-22
87
+
88
+ ### Fixes
89
+
90
+ * Fixed a regression parse bug in 3.2.9 that parsing with
91
+ `:skip_lines` may cause wrong result.
92
+
93
+ ## 3.2.9 - 2024-03-22
94
+
95
+ ### Fixes
96
+
97
+ * Fixed a parse bug that wrong result may be happen when:
98
+
99
+ * `:skip_lines` is used
100
+ * `:row_separator` is `"\r\n"`
101
+ * There is a line that includes `\n` as a column value
102
+
103
+ Reported by Ryo Tsukamoto.
104
+
105
+ GH-296
106
+
107
+ ### Thanks
108
+
109
+ * Ryo Tsukamoto
110
+
111
+ ## 3.2.8 - 2023-11-08
112
+
113
+ ### Improvements
114
+
115
+ * Added `CSV::InvalidEncodingError`.
116
+
117
+ Patch by Kosuke Shibata.
118
+
119
+ GH-287
120
+
121
+ ### Thanks
122
+
123
+ * Kosuke Shibata
124
+
125
+ ## 3.2.7 - 2023-06-26
126
+
127
+ ### Improvements
128
+
129
+ * Removed an unused internal variable.
130
+ [GH-273](https://github.com/ruby/csv/issues/273)
131
+ [Patch by Mau Magnaguagno]
132
+
133
+ * Changed to use `https://` instead of `http://` in documents.
134
+ [GH-274](https://github.com/ruby/csv/issues/274)
135
+ [Patch by Vivek Bharath Akupatni]
136
+
137
+ * Added prefix to a helper module in test.
138
+ [GH-278](https://github.com/ruby/csv/issues/278)
139
+ [Patch by Luke Gruber]
140
+
141
+ * Added a documentation for `liberal_parsing: {backslash_quotes: true}`.
142
+ [GH-280](https://github.com/ruby/csv/issues/280)
143
+ [Patch by Mark Schneider]
144
+
145
+ ### Fixes
146
+
147
+ * Fixed a wrong execution result in documents.
148
+ [GH-276](https://github.com/ruby/csv/issues/276)
149
+ [Patch by Yuki Tsujimoto]
150
+
151
+ * Fixed a bug that the same line is used multiple times.
152
+ [GH-279](https://github.com/ruby/csv/issues/279)
153
+ [Reported by Gabriel Nagy]
154
+
155
+ ### Thanks
156
+
157
+ * Mau Magnaguagno
158
+
159
+ * Vivek Bharath Akupatni
160
+
161
+ * Yuki Tsujimoto
162
+
163
+ * Luke Gruber
164
+
165
+ * Mark Schneider
166
+
167
+ * Gabriel Nagy
168
+
169
+ ## 3.2.6 - 2022-12-08
170
+
171
+ ### Improvements
172
+
173
+ * `CSV#read` consumes the same lines with other methods like
174
+ `CSV#shift`.
175
+ [[GitHub#258](https://github.com/ruby/csv/issues/258)]
176
+ [Reported by Lhoussaine Ghallou]
177
+
178
+ * All `Enumerable` based methods consume the same lines with other
179
+ methods. This may have a performance penalty.
180
+ [[GitHub#260](https://github.com/ruby/csv/issues/260)]
181
+ [Reported by Lhoussaine Ghallou]
182
+
183
+ * Simplify some implementations.
184
+ [[GitHub#262](https://github.com/ruby/csv/pull/262)]
185
+ [[GitHub#263](https://github.com/ruby/csv/pull/263)]
186
+ [Patch by Mau Magnaguagno]
187
+
188
+ ### Fixes
189
+
190
+ * Fixed `CSV.generate_lines` document.
191
+ [[GitHub#257](https://github.com/ruby/csv/pull/257)]
192
+ [Patch by Sampat Badhe]
193
+
194
+ ### Thanks
195
+
196
+ * Sampat Badhe
197
+
198
+ * Lhoussaine Ghallou
199
+
200
+ * Mau Magnaguagno
201
+
202
+ ## 3.2.5 - 2022-08-26
203
+
204
+ ### Improvements
205
+
206
+ * Added `CSV.generate_lines`.
207
+ [[GitHub#255](https://github.com/ruby/csv/issues/255)]
208
+ [Reported by OKURA Masafumi]
209
+ [[GitHub#256](https://github.com/ruby/csv/pull/256)]
210
+ [Patch by Eriko Sugiyama]
211
+
212
+ ### Thanks
213
+
214
+ * OKURA Masafumi
215
+
216
+ * Eriko Sugiyama
217
+
218
+ ## 3.2.4 - 2022-08-22
219
+
220
+ ### Improvements
221
+
222
+ * Cleaned up internal implementations.
223
+ [[GitHub#249](https://github.com/ruby/csv/pull/249)]
224
+ [[GitHub#250](https://github.com/ruby/csv/pull/250)]
225
+ [[GitHub#251](https://github.com/ruby/csv/pull/251)]
226
+ [Patch by Mau Magnaguagno]
227
+
228
+ * Added support for RFC 3339 style time.
229
+ [[GitHub#248](https://github.com/ruby/csv/pull/248)]
230
+ [Patch by Thierry Lambert]
231
+
232
+ * Added support for transcoding String CSV. Syntax is
233
+ `from-encoding:to-encoding`.
234
+ [[GitHub#254](https://github.com/ruby/csv/issues/254)]
235
+ [Reported by Richard Stueven]
236
+
237
+ * Added quoted information to `CSV::FieldInfo`.
238
+ [[GitHub#254](https://github.com/ruby/csv/pull/253)]
239
+ [Reported by Hirokazu SUZUKI]
240
+
241
+ ### Fixes
242
+
243
+ * Fixed a link in documents.
244
+ [[GitHub#244](https://github.com/ruby/csv/pull/244)]
245
+ [Patch by Peter Zhu]
246
+
247
+ ### Thanks
248
+
249
+ * Peter Zhu
250
+
251
+ * Mau Magnaguagno
252
+
253
+ * Thierry Lambert
254
+
255
+ * Richard Stueven
256
+
257
+ * Hirokazu SUZUKI
258
+
259
+ ## 3.2.3 - 2022-04-09
260
+
261
+ ### Improvements
262
+
263
+ * Added contents summary to `CSV::Table#inspect`.
264
+ [GitHub#229][Patch by Eriko Sugiyama]
265
+ [GitHub#235][Patch by Sampat Badhe]
266
+
267
+ * Suppressed `$INPUT_RECORD_SEPARATOR` deprecation warning by
268
+ `Warning.warn`.
269
+ [GitHub#233][Reported by Jean byroot Boussier]
270
+
271
+ * Improved error message for liberal parsing with quoted values.
272
+ [GitHub#231][Patch by Nikolay Rys]
273
+
274
+ * Fixed typos in documentation.
275
+ [GitHub#236][Patch by Sampat Badhe]
276
+
277
+ * Added `:max_field_size` option and deprecated `:field_size_limit` option.
278
+ [GitHub#238][Reported by Dan Buettner]
279
+
280
+ * Added `:symbol_raw` to built-in header converters.
281
+ [GitHub#237][Reported by taki]
282
+ [GitHub#239][Patch by Eriko Sugiyama]
283
+
284
+ ### Fixes
285
+
286
+ * Fixed a bug that some texts may be dropped unexpectedly.
287
+ [Bug #18245][ruby-core:105587][Reported by Hassan Abdul Rehman]
288
+
289
+ * Fixed a bug that `:field_size_limit` doesn't work with not complex row.
290
+ [GitHub#238][Reported by Dan Buettner]
291
+
292
+ ### Thanks
293
+
294
+ * Hassan Abdul Rehman
295
+
296
+ * Eriko Sugiyama
297
+
298
+ * Jean byroot Boussier
299
+
300
+ * Nikolay Rys
301
+
302
+ * Sampat Badhe
303
+
304
+ * Dan Buettner
305
+
306
+ * taki
307
+
308
+ ## 3.2.2 - 2021-12-24
309
+
310
+ ### Improvements
311
+
312
+ * Added a validation for invalid option combination.
313
+ [GitHub#225][Patch by adamroyjones]
314
+
315
+ * Improved documentation for developers.
316
+ [GitHub#227][Patch by Eriko Sugiyama]
317
+
318
+ ### Fixes
319
+
320
+ * Fixed a bug that all of `ARGF` contents may not be consumed.
321
+ [GitHub#228][Reported by Rafael Navaza]
322
+
323
+ ### Thanks
324
+
325
+ * adamroyjones
326
+
327
+ * Eriko Sugiyama
328
+
329
+ * Rafael Navaza
330
+
331
+ ## 3.2.1 - 2021-10-23
332
+
333
+ ### Improvements
334
+
335
+ * doc: Fixed wrong class name.
336
+ [GitHub#217][Patch by Vince]
337
+
338
+ * Changed to always use `"\n"` for the default row separator on Ruby
339
+ 3.0 or later because `$INPUT_RECORD_SEPARATOR` was deprecated
340
+ since Ruby 3.0.
341
+
342
+ * Added support for Ractor.
343
+ [GitHub#218][Patch by rm155]
344
+
345
+ * Users who want to use the built-in converters in non-main
346
+ Ractors need to call `Ractor.make_shareable(CSV::Converters)`
347
+ and/or `Ractor.make_shareable(CSV::HeaderConverters)` before
348
+ creating non-main Ractors.
349
+
350
+ ### Thanks
351
+
352
+ * Vince
353
+
354
+ * Joakim Antman
355
+
356
+ * rm155
357
+
358
+ ## 3.2.0 - 2021-06-06
359
+
360
+ ### Improvements
361
+
362
+ * `CSV.open`: Added support for `:newline` option.
363
+ [GitHub#198][Patch by Nobuyoshi Nakada]
364
+
365
+ * `CSV::Table#each`: Added support for column mode with duplicated
366
+ headers.
367
+ [GitHub#206][Reported by Yaroslav Berezovskiy]
368
+
369
+ * `Object#CSV`: Added support for Ruby 3.0.
370
+
371
+ * `CSV::Row`: Added support for pattern matching.
372
+ [GitHub#207][Patch by Kevin Newton]
373
+
374
+ ### Fixes
375
+
376
+ * Fixed typos in documentation.
377
+ [GitHub#196][GitHub#205][Patch by Sampat Badhe]
378
+
379
+ ### Thanks
380
+
381
+ * Sampat Badhe
382
+
383
+ * Nobuyoshi Nakada
384
+
385
+ * Yaroslav Berezovskiy
386
+
387
+ * Kevin Newton
388
+
389
+ ## 3.1.9 - 2020-11-23
390
+
391
+ ### Fixes
392
+
393
+ * Fixed a compatibility bug that the line to be processed by
394
+ `skip_lines:` has a row separator.
395
+ [GitHub#194][Reported by Josef Šimánek]
396
+
397
+ ### Thanks
398
+
399
+ * Josef Šimánek
400
+
401
+ ## 3.1.8 - 2020-11-18
402
+
403
+ ### Improvements
404
+
405
+ * Improved documentation.
406
+ [Patch by Burdette Lamar]
407
+
408
+ ### Thanks
409
+
410
+ * Burdette Lamar
411
+
412
+ ## 3.1.7 - 2020-08-04
413
+
414
+ ### Improvements
415
+
416
+ * Improved document.
417
+ [GitHub#158][GitHub#160][GitHub#161]
418
+ [Patch by Burdette Lamar]
419
+
420
+ * Updated required Ruby version to 2.5.0 or later.
421
+ [GitHub#159]
422
+ [Patch by Gabriel Nagy]
423
+
424
+ * Removed stringio 0.1.3 or later dependency.
425
+
426
+ ### Thanks
427
+
428
+ * Burdette Lamar
429
+
430
+ * Gabriel Nagy
431
+
432
+ ## 3.1.6 - 2020-07-20
433
+
434
+ ### Improvements
435
+
436
+ * Improved document.
437
+ [GitHub#127][GitHub#135][GitHub#136][GitHub#137][GitHub#139][GitHub#140]
438
+ [GitHub#141][GitHub#142][GitHub#143][GitHub#145][GitHub#146][GitHub#148]
439
+ [GitHub#148][GitHub#151][GitHub#152][GitHub#154][GitHub#155][GitHub#157]
440
+ [Patch by Burdette Lamar]
441
+
442
+ * `CSV.open`: Added support for `undef: :replace`.
443
+ [GitHub#129][Patch by Koichi ITO]
444
+
445
+ * `CSV.open`: Added support for `invalid: :replace`.
446
+ [GitHub#129][Patch by Koichi ITO]
447
+
448
+ * Don't run quotable check for invalid encoding field values.
449
+ [GitHub#131][Patch by Koichi ITO]
450
+
451
+ * Added support for specifying the target indexes and names to
452
+ `force_quotes:`.
453
+ [GitHub#153][Reported by Aleksandr]
454
+
455
+ * `CSV.generate`: Changed to use the encoding of the first non-ASCII
456
+ field rather than the encoding of ASCII only field.
457
+
458
+ * Changed to require the stringio gem 0.1.3 or later.
459
+
460
+ ### Thanks
461
+
462
+ * Burdette Lamar
463
+
464
+ * Koichi ITO
465
+
466
+ * Aleksandr
467
+
468
+ ## 3.1.5 - 2020-05-18
469
+
470
+ ### Improvements
471
+
472
+ * Improved document.
473
+ [GitHub#124][Patch by Burdette Lamar]
474
+
475
+ ### Fixes
476
+
477
+ * Added missing document files.
478
+ [GitHub#125][Reported by joast]
479
+
480
+ ### Thanks
481
+
482
+ * Burdette Lamar
483
+
484
+ * joast
485
+
486
+ ## 3.1.4 - 2020-05-17
487
+
488
+ ### Improvements
489
+
490
+ * Improved document.
491
+ [GitHub#122][Patch by Burdette Lamar]
492
+
493
+ * Stopped to dropping stack trace for exception caused by
494
+ `CSV.parse_line`.
495
+ [GitHub#120][Reported by Kyle d'Oliveira]
496
+
497
+ ### Fixes
498
+
499
+ * Fixed a bug that `:write_nil_value` or `:write_empty_value` don't
500
+ work with non `String` objects.
501
+ [GitHub#123][Reported by asm256]
502
+
503
+ ### Thanks
504
+
505
+ * Burdette Lamar
506
+
507
+ * asm256
508
+
509
+ * Kyle d'Oliveira
510
+
511
+ ## 3.1.3 - 2020-05-09
512
+
513
+ ### Improvements
514
+
515
+ * `CSV::Row#dup`: Copied deeply.
516
+ [GitHub#108][Patch by Jim Kane]
517
+
518
+ ### Fixes
519
+
520
+ * Fixed a infinite loop bug for zero length match `skip_lines`.
521
+ [GitHub#110][Patch by Mike MacDonald]
522
+
523
+ * `CSV.generate`: Fixed a bug that encoding isn't set correctly.
524
+ [GitHub#110][Patch by Seiei Miyagi]
525
+
526
+ * Fixed document for the `:strip` option.
527
+ [GitHub#114][Patch by TOMITA Masahiro]
528
+
529
+ * Fixed a parse bug when split charcter exists in middle of column
530
+ value.
531
+ [GitHub#115][Reported by TOMITA Masahiro]
532
+
533
+ ### Thanks
534
+
535
+ * Jim Kane
536
+
537
+ * Mike MacDonald
538
+
539
+ * Seiei Miyagi
540
+
541
+ * TOMITA Masahiro
542
+
543
+ ## 3.1.2 - 2019-10-12
544
+
545
+ ### Improvements
546
+
547
+ * Added `:col_sep` check.
548
+ [GitHub#94][Reported by Florent Beaurain]
549
+
550
+ * Suppressed warnings.
551
+ [GitHub#96][Patch by Nobuyoshi Nakada]
552
+
553
+ * Improved documentation.
554
+ [GitHub#101][GitHub#102][Patch by Vitor Oliveira]
555
+
556
+ ### Fixes
557
+
558
+ * Fixed a typo in documentation.
559
+ [GitHub#95][Patch by Yuji Yaginuma]
560
+
561
+ * Fixed a multibyte character handling bug.
562
+ [GitHub#97][Patch by koshigoe]
563
+
564
+ * Fixed typos in documentation.
565
+ [GitHub#100][Patch by Vitor Oliveira]
566
+
567
+ * Fixed a bug that seeked `StringIO` isn't accepted.
568
+ [GitHub#98][Patch by MATSUMOTO Katsuyoshi]
569
+
570
+ * Fixed a bug that `CSV.generate_line` doesn't work with
571
+ `Encoding.default_internal`.
572
+ [GitHub#105][Reported by David Rodríguez]
573
+
574
+ ### Thanks
575
+
576
+ * Florent Beaurain
577
+
578
+ * Yuji Yaginuma
579
+
580
+ * Nobuyoshi Nakada
581
+
582
+ * koshigoe
583
+
584
+ * Vitor Oliveira
585
+
586
+ * MATSUMOTO Katsuyoshi
587
+
588
+ * David Rodríguez
589
+
590
+ ## 3.1.1 - 2019-04-26
591
+
592
+ ### Improvements
593
+
594
+ * Added documentation for `strip` option.
595
+ [GitHub#88][Patch by hayashiyoshino]
596
+
597
+ * Added documentation for `write_converters`, `write_nil_value` and
598
+ `write_empty_value` options.
599
+ [GitHub#87][Patch by Masafumi Koba]
600
+
601
+ * Added documentation for `quote_empty` option.
602
+ [GitHub#89][Patch by kawa\_tech]
603
+
604
+ ### Fixes
605
+
606
+ * Fixed a bug that `strip; true` removes a newline.
607
+
608
+ ### Thanks
609
+
610
+ * hayashiyoshino
611
+
612
+ * Masafumi Koba
613
+
614
+ * kawa\_tech
615
+
616
+ ## 3.1.0 - 2019-04-17
617
+
618
+ ### Fixes
619
+
620
+ * Fixed a backward incompatibility bug that `CSV#eof?` may raises an
621
+ error.
622
+ [GitHub#86][Reported by krororo]
623
+
624
+ ### Thanks
625
+
626
+ * krororo
627
+
628
+ ## 3.0.9 - 2019-04-15
629
+
630
+ ### Fixes
631
+
632
+ * Fixed a test for Windows.
633
+
634
+ ## 3.0.8 - 2019-04-11
635
+
636
+ ### Fixes
637
+
638
+ * Fixed a bug that `strip: String` doesn't work.
639
+
640
+ ## 3.0.7 - 2019-04-08
641
+
642
+ ### Improvements
643
+
644
+ * Improve parse performance 1.5x by introducing loose parser.
645
+
646
+ ### Fixes
647
+
648
+ * Fix performance regression in 3.0.5.
649
+
650
+ * Fix a bug that `CSV#line` returns wrong value when you
651
+ use `quote_char: nil`.
652
+
653
+ ## 3.0.6 - 2019-03-30
654
+
655
+ ### Improvements
656
+
657
+ * `CSV.foreach`: Added support for `mode`.
658
+
659
+ ## 3.0.5 - 2019-03-24
660
+
661
+ ### Improvements
662
+
663
+ * Added `:liberal_parsing => {backslash_quote: true}` option.
664
+ [GitHub#74][Patch by 284km]
665
+
666
+ * Added `:write_converters` option.
667
+ [GitHub#73][Patch by Danillo Souza]
668
+
669
+ * Added `:write_nil_value` option.
670
+
671
+ * Added `:write_empty_value` option.
672
+
673
+ * Improved invalid byte line number detection.
674
+ [GitHub#78][Patch by Alyssa Ross]
675
+
676
+ * Added `quote_char: nil` optimization.
677
+ [GitHub#79][Patch by 284km]
678
+
679
+ * Improved error message.
680
+ [GitHub#81][Patch by Andrés Torres]
681
+
682
+ * Improved IO-like implementation for `StringIO` data.
683
+ [GitHub#80][Patch by Genadi Samokovarov]
684
+
685
+ * Added `:strip` option.
686
+ [GitHub#58]
687
+
688
+ ### Fixes
689
+
690
+ * Fixed a compatibility bug that `CSV#each` doesn't care `CSV#shift`.
691
+ [GitHub#76][Patch by Alyssa Ross]
692
+
693
+ * Fixed a compatibility bug that `CSV#eof?` doesn't care `CSV#each`
694
+ and `CSV#shift`.
695
+ [GitHub#77][Reported by Chi Leung]
696
+
697
+ * Fixed a compatibility bug that invalid line isn't ignored.
698
+ [GitHub#82][Reported by krororo]
699
+
700
+ * Fixed a bug that `:skip_lines` doesn't work with multibyte characters data.
701
+ [GitHub#83][Reported by ff2248]
702
+
703
+ ### Thanks
704
+
705
+ * Alyssa Ross
706
+
707
+ * 284km
708
+
709
+ * Chi Leung
710
+
711
+ * Danillo Souza
712
+
713
+ * Andrés Torres
714
+
715
+ * Genadi Samokovarov
716
+
717
+ * krororo
718
+
719
+ * ff2248
720
+
721
+ ## 3.0.4 - 2019-01-25
722
+
723
+ ### Improvements
724
+
725
+ * Removed duplicated `CSV::Row#include?` implementations.
726
+ [GitHub#69][Patch by Max Schwenk]
727
+
728
+ * Removed duplicated `CSV::Row#header?` implementations.
729
+ [GitHub#70][Patch by Max Schwenk]
730
+
731
+ ### Fixes
732
+
733
+ * Fixed a typo in document.
734
+ [GitHub#72][Patch by Artur Beljajev]
735
+
736
+ * Fixed a compatibility bug when row headers are changed.
737
+ [GitHub#71][Reported by tomoyuki kosaka]
738
+
739
+ ### Thanks
740
+
741
+ * Max Schwenk
742
+
743
+ * Artur Beljajev
744
+
745
+ * tomoyuki kosaka
746
+
747
+ ## 3.0.3 - 2019-01-12
748
+
749
+ ### Improvements
750
+
751
+ * Migrated benchmark tool to benchmark-driver from benchmark-ips.
752
+ [GitHub#57][Patch by 284km]
753
+
754
+ * Added `liberal_parsing: {double_quote_outside_quote: true}` parse
755
+ option.
756
+ [GitHub#66][Reported by Watson]
757
+
758
+ * Added `quote_empty:` write option.
759
+ [GitHub#35][Reported by Dave Myron]
760
+
761
+ ### Fixes
762
+
763
+ * Fixed a compatibility bug that `CSV.generate` always return
764
+ `ASCII-8BIT` encoding string.
765
+ [GitHub#63][Patch by Watson]
766
+
767
+ * Fixed a compatibility bug that `CSV.parse("", headers: true)`
768
+ doesn't return `CSV::Table`.
769
+ [GitHub#64][Reported by Watson][Patch by 284km]
770
+
771
+ * Fixed a compatibility bug that multiple-characters column
772
+ separator doesn't work.
773
+ [GitHub#67][Reported by Jesse Reiss]
774
+
775
+ * Fixed a compatibility bug that double `#each` parse twice.
776
+ [GitHub#68][Reported by Max Schwenk]
777
+
778
+ ### Thanks
779
+
780
+ * Watson
781
+
782
+ * 284km
783
+
784
+ * Jesse Reiss
785
+
786
+ * Dave Myron
787
+
788
+ * Max Schwenk
789
+
790
+ ## 3.0.2 - 2018-12-23
791
+
792
+ ### Improvements
793
+
794
+ * Changed to use strscan in parser.
795
+ [GitHub#52][Patch by 284km]
796
+
797
+ * Improves CSV write performance.
798
+ 3.0.2 will be about 2 times faster than 3.0.1.
799
+
800
+ * Improves CSV parse performance for complex case.
801
+ 3.0.2 will be about 2 times faster than 3.0.1.
802
+
803
+ ### Fixes
804
+
805
+ * Fixed a parse error bug for new line only input with `headers` option.
806
+ [GitHub#53][Reported by Chris Beer]
807
+
808
+ * Fixed some typos in document.
809
+ [GitHub#54][Patch by Victor Shepelev]
810
+
811
+ ### Thanks
812
+
813
+ * 284km
814
+
815
+ * Chris Beer
816
+
817
+ * Victor Shepelev
818
+
819
+ ## 3.0.1 - 2018-12-07
820
+
821
+ ### Improvements
822
+
823
+ * Added a test.
824
+ [GitHub#38][Patch by 284km]
825
+
826
+ * `CSV::Row#dup`: Changed to duplicate internal data.
827
+ [GitHub#39][Reported by André Guimarães Sakata]
828
+
829
+ * Documented `:nil_value` and `:empty_value` options.
830
+ [GitHub#41][Patch by OwlWorks]
831
+
832
+ * Added support for separator detection for non-seekable inputs.
833
+ [GitHub#45][Patch by Ilmari Karonen]
834
+
835
+ * Removed needless code.
836
+ [GitHub#48][Patch by Espartaco Palma]
837
+
838
+ * Added support for parsing header only CSV with `headers: true`.
839
+ [GitHub#47][Patch by Kazuma Shibasaka]
840
+
841
+ * Added support for coverage report in CI.
842
+ [GitHub#48][Patch by Espartaco Palma]
843
+
844
+ * Improved auto CR row separator detection.
845
+ [GitHub#51][Reported by Yuki Kurihara]
846
+
847
+ ### Fixes
848
+
849
+ * Fixed a typo in document.
850
+ [GitHub#40][Patch by Marcus Stollsteimer]
851
+
852
+ ### Thanks
853
+
854
+ * 284km
855
+
856
+ * André Guimarães Sakata
857
+
858
+ * Marcus Stollsteimer
859
+
860
+ * OwlWorks
861
+
862
+ * Ilmari Karonen
863
+
864
+ * Espartaco Palma
865
+
866
+ * Kazuma Shibasaka
867
+
868
+ * Yuki Kurihara
869
+
870
+ ## 3.0.0 - 2018-06-06
871
+
872
+ ### Fixes
873
+
874
+ * Fixed a bug that header isn't returned for empty row.
875
+ [GitHub#37][Patch by Grace Lee]
876
+
877
+ ### Thanks
878
+
879
+ * Grace Lee
880
+
881
+ ## 1.0.2 - 2018-05-03
882
+
883
+ ### Improvements
884
+
885
+ * Split file for CSV::VERSION
886
+
887
+ * Code cleanup: Split csv.rb into a more manageable structure
888
+ [GitHub#19][Patch by Espartaco Palma]
889
+ [GitHub#20][Patch by Steven Daniels]
890
+
891
+ * Use CSV::MalformedCSVError for invalid encoding line
892
+ [GitHub#26][Reported by deepj]
893
+
894
+ * Support implicit Row <-> Array conversion
895
+ [Bug #10013][ruby-core:63582][Reported by Dawid Janczak]
896
+
897
+ * Update class docs
898
+ [GitHub#32][Patch by zverok]
899
+
900
+ * Add `Row#each_pair`
901
+ [GitHub#33][Patch by zverok]
902
+
903
+ * Improve CSV performance
904
+ [GitHub#30][Patch by Watson]
905
+
906
+ * Add :nil_value and :empty_value option
907
+
908
+ ### Fixes
909
+
910
+ * Fix a bug that "bom|utf-8" doesn't work
911
+ [GitHub#23][Reported by Pavel Lobashov]
912
+
913
+ * `CSV::Row#to_h`, `#to_hash`: uses the same value as `Row#[]`
914
+ [Bug #14482][Reported by tomoya ishida]
915
+
916
+ * Make row separator detection more robust
917
+ [GitHub#25][Reported by deepj]
918
+
919
+ * Fix a bug that too much separator when col_sep is `" "`
920
+ [Bug #8784][ruby-core:63582][Reported by Sylvain Laperche]
921
+
922
+ ### Thanks
923
+
924
+ * Espartaco Palma
925
+
926
+ * Steven Daniels
927
+
928
+ * deepj
929
+
930
+ * Dawid Janczak
931
+
932
+ * zverok
933
+
934
+ * Watson
935
+
936
+ * Pavel Lobashov
937
+
938
+ * tomoya ishida
939
+
940
+ * Sylvain Laperche
941
+
942
+ * Ryunosuke Sato
943
+
944
+ ## 1.0.1 - 2018-02-09
945
+
946
+ ### Improvements
947
+
948
+ * `CSV::Table#delete`: Added bulk delete support. You can delete
949
+ multiple rows and columns at once.
950
+ [GitHub#4][Patch by Vladislav]
951
+
952
+ * Updated Gem description.
953
+ [GitHub#11][Patch by Marcus Stollsteimer]
954
+
955
+ * Code cleanup.
956
+ [GitHub#12][Patch by Marcus Stollsteimer]
957
+ [GitHub#14][Patch by Steven Daniels]
958
+ [GitHub#18][Patch by takkanm]
959
+
960
+ * `CSV::Table#dig`: Added.
961
+ [GitHub#15][Patch by Tomohiro Ogoke]
962
+
963
+ * `CSV::Row#dig`: Added.
964
+ [GitHub#15][Patch by Tomohiro Ogoke]
965
+
966
+ * Added ISO 8601 support to date time converter.
967
+ [GitHub#16]
968
+
969
+ ### Fixes
970
+
971
+ * Fixed wrong `CSV::VERSION`.
972
+ [GitHub#10][Reported by Marcus Stollsteimer]
973
+
974
+ * `CSV.generate`: Fixed a regression bug that `String` argument is
975
+ ignored.
976
+ [GitHub#13][Patch by pavel]
977
+
978
+ ### Thanks
979
+
980
+ * Vladislav
981
+
982
+ * Marcus Stollsteimer
983
+
984
+ * Steven Daniels
985
+
986
+ * takkanm
987
+
988
+ * Tomohiro Ogoke
989
+
990
+ * pavel