csv 1.0.2 → 3.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.md +868 -0
  3. data/README.md +6 -3
  4. data/doc/csv/arguments/io.rdoc +5 -0
  5. data/doc/csv/options/common/col_sep.rdoc +57 -0
  6. data/doc/csv/options/common/quote_char.rdoc +42 -0
  7. data/doc/csv/options/common/row_sep.rdoc +91 -0
  8. data/doc/csv/options/generating/force_quotes.rdoc +17 -0
  9. data/doc/csv/options/generating/quote_empty.rdoc +12 -0
  10. data/doc/csv/options/generating/write_converters.rdoc +25 -0
  11. data/doc/csv/options/generating/write_empty_value.rdoc +15 -0
  12. data/doc/csv/options/generating/write_headers.rdoc +29 -0
  13. data/doc/csv/options/generating/write_nil_value.rdoc +14 -0
  14. data/doc/csv/options/parsing/converters.rdoc +46 -0
  15. data/doc/csv/options/parsing/empty_value.rdoc +13 -0
  16. data/doc/csv/options/parsing/field_size_limit.rdoc +39 -0
  17. data/doc/csv/options/parsing/header_converters.rdoc +43 -0
  18. data/doc/csv/options/parsing/headers.rdoc +63 -0
  19. data/doc/csv/options/parsing/liberal_parsing.rdoc +38 -0
  20. data/doc/csv/options/parsing/nil_value.rdoc +12 -0
  21. data/doc/csv/options/parsing/return_headers.rdoc +22 -0
  22. data/doc/csv/options/parsing/skip_blanks.rdoc +31 -0
  23. data/doc/csv/options/parsing/skip_lines.rdoc +37 -0
  24. data/doc/csv/options/parsing/strip.rdoc +15 -0
  25. data/doc/csv/options/parsing/unconverted_fields.rdoc +27 -0
  26. data/doc/csv/recipes/filtering.rdoc +158 -0
  27. data/doc/csv/recipes/generating.rdoc +298 -0
  28. data/doc/csv/recipes/parsing.rdoc +545 -0
  29. data/doc/csv/recipes/recipes.rdoc +6 -0
  30. data/lib/csv/core_ext/array.rb +1 -1
  31. data/lib/csv/core_ext/string.rb +1 -1
  32. data/lib/csv/fields_converter.rb +89 -0
  33. data/lib/csv/input_record_separator.rb +18 -0
  34. data/lib/csv/parser.rb +1290 -0
  35. data/lib/csv/row.rb +505 -136
  36. data/lib/csv/table.rb +791 -114
  37. data/lib/csv/version.rb +1 -1
  38. data/lib/csv/writer.rb +210 -0
  39. data/lib/csv.rb +2432 -1329
  40. metadata +66 -13
  41. data/news.md +0 -112
data/NEWS.md ADDED
@@ -0,0 +1,868 @@
1
+ # News
2
+
3
+ ## 3.2.7 - 2023-06-26
4
+
5
+ ### Improvements
6
+
7
+ * Removed an unused internal variable.
8
+ [GH-273](https://github.com/ruby/csv/issues/273)
9
+ [Patch by Mau Magnaguagno]
10
+
11
+ * Changed to use `https://` instead of `http://` in documents.
12
+ [GH-274](https://github.com/ruby/csv/issues/274)
13
+ [Patch by Vivek Bharath Akupatni]
14
+
15
+ * Added prefix to a helper module in test.
16
+ [GH-278](https://github.com/ruby/csv/issues/278)
17
+ [Patch by Luke Gruber]
18
+
19
+ * Added a documentation for `liberal_parsing: {backslash_quotes: true}`.
20
+ [GH-280](https://github.com/ruby/csv/issues/280)
21
+ [Patch by Mark Schneider]
22
+
23
+ ### Fixes
24
+
25
+ * Fixed a wrong execution result in documents.
26
+ [GH-276](https://github.com/ruby/csv/issues/276)
27
+ [Patch by Yuki Tsujimoto]
28
+
29
+ * Fixed a bug that the same line is used multiple times.
30
+ [GH-279](https://github.com/ruby/csv/issues/279)
31
+ [Reported by Gabriel Nagy]
32
+
33
+ ### Thanks
34
+
35
+ * Mau Magnaguagno
36
+
37
+ * Vivek Bharath Akupatni
38
+
39
+ * Yuki Tsujimoto
40
+
41
+ * Luke Gruber
42
+
43
+ * Mark Schneider
44
+
45
+ * Gabriel Nagy
46
+
47
+ ## 3.2.6 - 2022-12-08
48
+
49
+ ### Improvements
50
+
51
+ * `CSV#read` consumes the same lines with other methods like
52
+ `CSV#shift`.
53
+ [[GitHub#258](https://github.com/ruby/csv/issues/258)]
54
+ [Reported by Lhoussaine Ghallou]
55
+
56
+ * All `Enumerable` based methods consume the same lines with other
57
+ methods. This may have a performance penalty.
58
+ [[GitHub#260](https://github.com/ruby/csv/issues/260)]
59
+ [Reported by Lhoussaine Ghallou]
60
+
61
+ * Simplify some implementations.
62
+ [[GitHub#262](https://github.com/ruby/csv/pull/262)]
63
+ [[GitHub#263](https://github.com/ruby/csv/pull/263)]
64
+ [Patch by Mau Magnaguagno]
65
+
66
+ ### Fixes
67
+
68
+ * Fixed `CSV.generate_lines` document.
69
+ [[GitHub#257](https://github.com/ruby/csv/pull/257)]
70
+ [Patch by Sampat Badhe]
71
+
72
+ ### Thanks
73
+
74
+ * Sampat Badhe
75
+
76
+ * Lhoussaine Ghallou
77
+
78
+ * Mau Magnaguagno
79
+
80
+ ## 3.2.5 - 2022-08-26
81
+
82
+ ### Improvements
83
+
84
+ * Added `CSV.generate_lines`.
85
+ [[GitHub#255](https://github.com/ruby/csv/issues/255)]
86
+ [Reported by OKURA Masafumi]
87
+ [[GitHub#256](https://github.com/ruby/csv/pull/256)]
88
+ [Patch by Eriko Sugiyama]
89
+
90
+ ### Thanks
91
+
92
+ * OKURA Masafumi
93
+
94
+ * Eriko Sugiyama
95
+
96
+ ## 3.2.4 - 2022-08-22
97
+
98
+ ### Improvements
99
+
100
+ * Cleaned up internal implementations.
101
+ [[GitHub#249](https://github.com/ruby/csv/pull/249)]
102
+ [[GitHub#250](https://github.com/ruby/csv/pull/250)]
103
+ [[GitHub#251](https://github.com/ruby/csv/pull/251)]
104
+ [Patch by Mau Magnaguagno]
105
+
106
+ * Added support for RFC 3339 style time.
107
+ [[GitHub#248](https://github.com/ruby/csv/pull/248)]
108
+ [Patch by Thierry Lambert]
109
+
110
+ * Added support for transcoding String CSV. Syntax is
111
+ `from-encoding:to-encoding`.
112
+ [[GitHub#254](https://github.com/ruby/csv/issues/254)]
113
+ [Reported by Richard Stueven]
114
+
115
+ * Added quoted information to `CSV::FieldInfo`.
116
+ [[GitHub#254](https://github.com/ruby/csv/pull/253)]
117
+ [Reported by Hirokazu SUZUKI]
118
+
119
+ ### Fixes
120
+
121
+ * Fixed a link in documents.
122
+ [[GitHub#244](https://github.com/ruby/csv/pull/244)]
123
+ [Patch by Peter Zhu]
124
+
125
+ ### Thanks
126
+
127
+ * Peter Zhu
128
+
129
+ * Mau Magnaguagno
130
+
131
+ * Thierry Lambert
132
+
133
+ * Richard Stueven
134
+
135
+ * Hirokazu SUZUKI
136
+
137
+ ## 3.2.3 - 2022-04-09
138
+
139
+ ### Improvements
140
+
141
+ * Added contents summary to `CSV::Table#inspect`.
142
+ [GitHub#229][Patch by Eriko Sugiyama]
143
+ [GitHub#235][Patch by Sampat Badhe]
144
+
145
+ * Suppressed `$INPUT_RECORD_SEPARATOR` deprecation warning by
146
+ `Warning.warn`.
147
+ [GitHub#233][Reported by Jean byroot Boussier]
148
+
149
+ * Improved error message for liberal parsing with quoted values.
150
+ [GitHub#231][Patch by Nikolay Rys]
151
+
152
+ * Fixed typos in documentation.
153
+ [GitHub#236][Patch by Sampat Badhe]
154
+
155
+ * Added `:max_field_size` option and deprecated `:field_size_limit` option.
156
+ [GitHub#238][Reported by Dan Buettner]
157
+
158
+ * Added `:symbol_raw` to built-in header converters.
159
+ [GitHub#237][Reported by taki]
160
+ [GitHub#239][Patch by Eriko Sugiyama]
161
+
162
+ ### Fixes
163
+
164
+ * Fixed a bug that some texts may be dropped unexpectedly.
165
+ [Bug #18245][ruby-core:105587][Reported by Hassan Abdul Rehman]
166
+
167
+ * Fixed a bug that `:field_size_limit` doesn't work with not complex row.
168
+ [GitHub#238][Reported by Dan Buettner]
169
+
170
+ ### Thanks
171
+
172
+ * Hassan Abdul Rehman
173
+
174
+ * Eriko Sugiyama
175
+
176
+ * Jean byroot Boussier
177
+
178
+ * Nikolay Rys
179
+
180
+ * Sampat Badhe
181
+
182
+ * Dan Buettner
183
+
184
+ * taki
185
+
186
+ ## 3.2.2 - 2021-12-24
187
+
188
+ ### Improvements
189
+
190
+ * Added a validation for invalid option combination.
191
+ [GitHub#225][Patch by adamroyjones]
192
+
193
+ * Improved documentation for developers.
194
+ [GitHub#227][Patch by Eriko Sugiyama]
195
+
196
+ ### Fixes
197
+
198
+ * Fixed a bug that all of `ARGF` contents may not be consumed.
199
+ [GitHub#228][Reported by Rafael Navaza]
200
+
201
+ ### Thanks
202
+
203
+ * adamroyjones
204
+
205
+ * Eriko Sugiyama
206
+
207
+ * Rafael Navaza
208
+
209
+ ## 3.2.1 - 2021-10-23
210
+
211
+ ### Improvements
212
+
213
+ * doc: Fixed wrong class name.
214
+ [GitHub#217][Patch by Vince]
215
+
216
+ * Changed to always use `"\n"` for the default row separator on Ruby
217
+ 3.0 or later because `$INPUT_RECORD_SEPARATOR` was deprecated
218
+ since Ruby 3.0.
219
+
220
+ * Added support for Ractor.
221
+ [GitHub#218][Patch by rm155]
222
+
223
+ * Users who want to use the built-in converters in non-main
224
+ Ractors need to call `Ractor.make_shareable(CSV::Converters)`
225
+ and/or `Ractor.make_shareable(CSV::HeaderConverters)` before
226
+ creating non-main Ractors.
227
+
228
+ ### Thanks
229
+
230
+ * Vince
231
+
232
+ * Joakim Antman
233
+
234
+ * rm155
235
+
236
+ ## 3.2.0 - 2021-06-06
237
+
238
+ ### Improvements
239
+
240
+ * `CSV.open`: Added support for `:newline` option.
241
+ [GitHub#198][Patch by Nobuyoshi Nakada]
242
+
243
+ * `CSV::Table#each`: Added support for column mode with duplicated
244
+ headers.
245
+ [GitHub#206][Reported by Yaroslav Berezovskiy]
246
+
247
+ * `Object#CSV`: Added support for Ruby 3.0.
248
+
249
+ * `CSV::Row`: Added support for pattern matching.
250
+ [GitHub#207][Patch by Kevin Newton]
251
+
252
+ ### Fixes
253
+
254
+ * Fixed typos in documentation.
255
+ [GitHub#196][GitHub#205][Patch by Sampat Badhe]
256
+
257
+ ### Thanks
258
+
259
+ * Sampat Badhe
260
+
261
+ * Nobuyoshi Nakada
262
+
263
+ * Yaroslav Berezovskiy
264
+
265
+ * Kevin Newton
266
+
267
+ ## 3.1.9 - 2020-11-23
268
+
269
+ ### Fixes
270
+
271
+ * Fixed a compatibility bug that the line to be processed by
272
+ `skip_lines:` has a row separator.
273
+ [GitHub#194][Reported by Josef Šimánek]
274
+
275
+ ### Thanks
276
+
277
+ * Josef Šimánek
278
+
279
+ ## 3.1.8 - 2020-11-18
280
+
281
+ ### Improvements
282
+
283
+ * Improved documentation.
284
+ [Patch by Burdette Lamar]
285
+
286
+ ### Thanks
287
+
288
+ * Burdette Lamar
289
+
290
+ ## 3.1.7 - 2020-08-04
291
+
292
+ ### Improvements
293
+
294
+ * Improved document.
295
+ [GitHub#158][GitHub#160][GitHub#161]
296
+ [Patch by Burdette Lamar]
297
+
298
+ * Updated required Ruby version to 2.5.0 or later.
299
+ [GitHub#159]
300
+ [Patch by Gabriel Nagy]
301
+
302
+ * Removed stringio 0.1.3 or later dependency.
303
+
304
+ ### Thanks
305
+
306
+ * Burdette Lamar
307
+
308
+ * Gabriel Nagy
309
+
310
+ ## 3.1.6 - 2020-07-20
311
+
312
+ ### Improvements
313
+
314
+ * Improved document.
315
+ [GitHub#127][GitHub#135][GitHub#136][GitHub#137][GitHub#139][GitHub#140]
316
+ [GitHub#141][GitHub#142][GitHub#143][GitHub#145][GitHub#146][GitHub#148]
317
+ [GitHub#148][GitHub#151][GitHub#152][GitHub#154][GitHub#155][GitHub#157]
318
+ [Patch by Burdette Lamar]
319
+
320
+ * `CSV.open`: Added support for `undef: :replace`.
321
+ [GitHub#129][Patch by Koichi ITO]
322
+
323
+ * `CSV.open`: Added support for `invalid: :replace`.
324
+ [GitHub#129][Patch by Koichi ITO]
325
+
326
+ * Don't run quotable check for invalid encoding field values.
327
+ [GitHub#131][Patch by Koichi ITO]
328
+
329
+ * Added support for specifying the target indexes and names to
330
+ `force_quotes:`.
331
+ [GitHub#153][Reported by Aleksandr]
332
+
333
+ * `CSV.generate`: Changed to use the encoding of the first non-ASCII
334
+ field rather than the encoding of ASCII only field.
335
+
336
+ * Changed to require the stringio gem 0.1.3 or later.
337
+
338
+ ### Thanks
339
+
340
+ * Burdette Lamar
341
+
342
+ * Koichi ITO
343
+
344
+ * Aleksandr
345
+
346
+ ## 3.1.5 - 2020-05-18
347
+
348
+ ### Improvements
349
+
350
+ * Improved document.
351
+ [GitHub#124][Patch by Burdette Lamar]
352
+
353
+ ### Fixes
354
+
355
+ * Added missing document files.
356
+ [GitHub#125][Reported by joast]
357
+
358
+ ### Thanks
359
+
360
+ * Burdette Lamar
361
+
362
+ * joast
363
+
364
+ ## 3.1.4 - 2020-05-17
365
+
366
+ ### Improvements
367
+
368
+ * Improved document.
369
+ [GitHub#122][Patch by Burdette Lamar]
370
+
371
+ * Stopped to dropping stack trace for exception caused by
372
+ `CSV.parse_line`.
373
+ [GitHub#120][Reported by Kyle d'Oliveira]
374
+
375
+ ### Fixes
376
+
377
+ * Fixed a bug that `:write_nil_value` or `:write_empty_value` don't
378
+ work with non `String` objects.
379
+ [GitHub#123][Reported by asm256]
380
+
381
+ ### Thanks
382
+
383
+ * Burdette Lamar
384
+
385
+ * asm256
386
+
387
+ * Kyle d'Oliveira
388
+
389
+ ## 3.1.3 - 2020-05-09
390
+
391
+ ### Improvements
392
+
393
+ * `CSV::Row#dup`: Copied deeply.
394
+ [GitHub#108][Patch by Jim Kane]
395
+
396
+ ### Fixes
397
+
398
+ * Fixed a infinite loop bug for zero length match `skip_lines`.
399
+ [GitHub#110][Patch by Mike MacDonald]
400
+
401
+ * `CSV.generate`: Fixed a bug that encoding isn't set correctly.
402
+ [GitHub#110][Patch by Seiei Miyagi]
403
+
404
+ * Fixed document for the `:strip` option.
405
+ [GitHub#114][Patch by TOMITA Masahiro]
406
+
407
+ * Fixed a parse bug when split charcter exists in middle of column
408
+ value.
409
+ [GitHub#115][Reported by TOMITA Masahiro]
410
+
411
+ ### Thanks
412
+
413
+ * Jim Kane
414
+
415
+ * Mike MacDonald
416
+
417
+ * Seiei Miyagi
418
+
419
+ * TOMITA Masahiro
420
+
421
+ ## 3.1.2 - 2019-10-12
422
+
423
+ ### Improvements
424
+
425
+ * Added `:col_sep` check.
426
+ [GitHub#94][Reported by Florent Beaurain]
427
+
428
+ * Suppressed warnings.
429
+ [GitHub#96][Patch by Nobuyoshi Nakada]
430
+
431
+ * Improved documentation.
432
+ [GitHub#101][GitHub#102][Patch by Vitor Oliveira]
433
+
434
+ ### Fixes
435
+
436
+ * Fixed a typo in documentation.
437
+ [GitHub#95][Patch by Yuji Yaginuma]
438
+
439
+ * Fixed a multibyte character handling bug.
440
+ [GitHub#97][Patch by koshigoe]
441
+
442
+ * Fixed typos in documentation.
443
+ [GitHub#100][Patch by Vitor Oliveira]
444
+
445
+ * Fixed a bug that seeked `StringIO` isn't accepted.
446
+ [GitHub#98][Patch by MATSUMOTO Katsuyoshi]
447
+
448
+ * Fixed a bug that `CSV.generate_line` doesn't work with
449
+ `Encoding.default_internal`.
450
+ [GitHub#105][Reported by David Rodríguez]
451
+
452
+ ### Thanks
453
+
454
+ * Florent Beaurain
455
+
456
+ * Yuji Yaginuma
457
+
458
+ * Nobuyoshi Nakada
459
+
460
+ * koshigoe
461
+
462
+ * Vitor Oliveira
463
+
464
+ * MATSUMOTO Katsuyoshi
465
+
466
+ * David Rodríguez
467
+
468
+ ## 3.1.1 - 2019-04-26
469
+
470
+ ### Improvements
471
+
472
+ * Added documentation for `strip` option.
473
+ [GitHub#88][Patch by hayashiyoshino]
474
+
475
+ * Added documentation for `write_converters`, `write_nil_value` and
476
+ `write_empty_value` options.
477
+ [GitHub#87][Patch by Masafumi Koba]
478
+
479
+ * Added documentation for `quote_empty` option.
480
+ [GitHub#89][Patch by kawa\_tech]
481
+
482
+ ### Fixes
483
+
484
+ * Fixed a bug that `strip; true` removes a newline.
485
+
486
+ ### Thanks
487
+
488
+ * hayashiyoshino
489
+
490
+ * Masafumi Koba
491
+
492
+ * kawa\_tech
493
+
494
+ ## 3.1.0 - 2019-04-17
495
+
496
+ ### Fixes
497
+
498
+ * Fixed a backward incompatibility bug that `CSV#eof?` may raises an
499
+ error.
500
+ [GitHub#86][Reported by krororo]
501
+
502
+ ### Thanks
503
+
504
+ * krororo
505
+
506
+ ## 3.0.9 - 2019-04-15
507
+
508
+ ### Fixes
509
+
510
+ * Fixed a test for Windows.
511
+
512
+ ## 3.0.8 - 2019-04-11
513
+
514
+ ### Fixes
515
+
516
+ * Fixed a bug that `strip: String` doesn't work.
517
+
518
+ ## 3.0.7 - 2019-04-08
519
+
520
+ ### Improvements
521
+
522
+ * Improve parse performance 1.5x by introducing loose parser.
523
+
524
+ ### Fixes
525
+
526
+ * Fix performance regression in 3.0.5.
527
+
528
+ * Fix a bug that `CSV#line` returns wrong value when you
529
+ use `quote_char: nil`.
530
+
531
+ ## 3.0.6 - 2019-03-30
532
+
533
+ ### Improvements
534
+
535
+ * `CSV.foreach`: Added support for `mode`.
536
+
537
+ ## 3.0.5 - 2019-03-24
538
+
539
+ ### Improvements
540
+
541
+ * Added `:liberal_parsing => {backslash_quote: true}` option.
542
+ [GitHub#74][Patch by 284km]
543
+
544
+ * Added `:write_converters` option.
545
+ [GitHub#73][Patch by Danillo Souza]
546
+
547
+ * Added `:write_nil_value` option.
548
+
549
+ * Added `:write_empty_value` option.
550
+
551
+ * Improved invalid byte line number detection.
552
+ [GitHub#78][Patch by Alyssa Ross]
553
+
554
+ * Added `quote_char: nil` optimization.
555
+ [GitHub#79][Patch by 284km]
556
+
557
+ * Improved error message.
558
+ [GitHub#81][Patch by Andrés Torres]
559
+
560
+ * Improved IO-like implementation for `StringIO` data.
561
+ [GitHub#80][Patch by Genadi Samokovarov]
562
+
563
+ * Added `:strip` option.
564
+ [GitHub#58]
565
+
566
+ ### Fixes
567
+
568
+ * Fixed a compatibility bug that `CSV#each` doesn't care `CSV#shift`.
569
+ [GitHub#76][Patch by Alyssa Ross]
570
+
571
+ * Fixed a compatibility bug that `CSV#eof?` doesn't care `CSV#each`
572
+ and `CSV#shift`.
573
+ [GitHub#77][Reported by Chi Leung]
574
+
575
+ * Fixed a compatibility bug that invalid line isn't ignored.
576
+ [GitHub#82][Reported by krororo]
577
+
578
+ * Fixed a bug that `:skip_lines` doesn't work with multibyte characters data.
579
+ [GitHub#83][Reported by ff2248]
580
+
581
+ ### Thanks
582
+
583
+ * Alyssa Ross
584
+
585
+ * 284km
586
+
587
+ * Chi Leung
588
+
589
+ * Danillo Souza
590
+
591
+ * Andrés Torres
592
+
593
+ * Genadi Samokovarov
594
+
595
+ * krororo
596
+
597
+ * ff2248
598
+
599
+ ## 3.0.4 - 2019-01-25
600
+
601
+ ### Improvements
602
+
603
+ * Removed duplicated `CSV::Row#include?` implementations.
604
+ [GitHub#69][Patch by Max Schwenk]
605
+
606
+ * Removed duplicated `CSV::Row#header?` implementations.
607
+ [GitHub#70][Patch by Max Schwenk]
608
+
609
+ ### Fixes
610
+
611
+ * Fixed a typo in document.
612
+ [GitHub#72][Patch by Artur Beljajev]
613
+
614
+ * Fixed a compatibility bug when row headers are changed.
615
+ [GitHub#71][Reported by tomoyuki kosaka]
616
+
617
+ ### Thanks
618
+
619
+ * Max Schwenk
620
+
621
+ * Artur Beljajev
622
+
623
+ * tomoyuki kosaka
624
+
625
+ ## 3.0.3 - 2019-01-12
626
+
627
+ ### Improvements
628
+
629
+ * Migrated benchmark tool to benchmark-driver from benchmark-ips.
630
+ [GitHub#57][Patch by 284km]
631
+
632
+ * Added `liberal_parsing: {double_quote_outside_quote: true}` parse
633
+ option.
634
+ [GitHub#66][Reported by Watson]
635
+
636
+ * Added `quote_empty:` write option.
637
+ [GitHub#35][Reported by Dave Myron]
638
+
639
+ ### Fixes
640
+
641
+ * Fixed a compatibility bug that `CSV.generate` always return
642
+ `ASCII-8BIT` encoding string.
643
+ [GitHub#63][Patch by Watson]
644
+
645
+ * Fixed a compatibility bug that `CSV.parse("", headers: true)`
646
+ doesn't return `CSV::Table`.
647
+ [GitHub#64][Reported by Watson][Patch by 284km]
648
+
649
+ * Fixed a compatibility bug that multiple-characters column
650
+ separator doesn't work.
651
+ [GitHub#67][Reported by Jesse Reiss]
652
+
653
+ * Fixed a compatibility bug that double `#each` parse twice.
654
+ [GitHub#68][Reported by Max Schwenk]
655
+
656
+ ### Thanks
657
+
658
+ * Watson
659
+
660
+ * 284km
661
+
662
+ * Jesse Reiss
663
+
664
+ * Dave Myron
665
+
666
+ * Max Schwenk
667
+
668
+ ## 3.0.2 - 2018-12-23
669
+
670
+ ### Improvements
671
+
672
+ * Changed to use strscan in parser.
673
+ [GitHub#52][Patch by 284km]
674
+
675
+ * Improves CSV write performance.
676
+ 3.0.2 will be about 2 times faster than 3.0.1.
677
+
678
+ * Improves CSV parse performance for complex case.
679
+ 3.0.2 will be about 2 times faster than 3.0.1.
680
+
681
+ ### Fixes
682
+
683
+ * Fixed a parse error bug for new line only input with `headers` option.
684
+ [GitHub#53][Reported by Chris Beer]
685
+
686
+ * Fixed some typos in document.
687
+ [GitHub#54][Patch by Victor Shepelev]
688
+
689
+ ### Thanks
690
+
691
+ * 284km
692
+
693
+ * Chris Beer
694
+
695
+ * Victor Shepelev
696
+
697
+ ## 3.0.1 - 2018-12-07
698
+
699
+ ### Improvements
700
+
701
+ * Added a test.
702
+ [GitHub#38][Patch by 284km]
703
+
704
+ * `CSV::Row#dup`: Changed to duplicate internal data.
705
+ [GitHub#39][Reported by André Guimarães Sakata]
706
+
707
+ * Documented `:nil_value` and `:empty_value` options.
708
+ [GitHub#41][Patch by OwlWorks]
709
+
710
+ * Added support for separator detection for non-seekable inputs.
711
+ [GitHub#45][Patch by Ilmari Karonen]
712
+
713
+ * Removed needless code.
714
+ [GitHub#48][Patch by Espartaco Palma]
715
+
716
+ * Added support for parsing header only CSV with `headers: true`.
717
+ [GitHub#47][Patch by Kazuma Shibasaka]
718
+
719
+ * Added support for coverage report in CI.
720
+ [GitHub#48][Patch by Espartaco Palma]
721
+
722
+ * Improved auto CR row separator detection.
723
+ [GitHub#51][Reported by Yuki Kurihara]
724
+
725
+ ### Fixes
726
+
727
+ * Fixed a typo in document.
728
+ [GitHub#40][Patch by Marcus Stollsteimer]
729
+
730
+ ### Thanks
731
+
732
+ * 284km
733
+
734
+ * André Guimarães Sakata
735
+
736
+ * Marcus Stollsteimer
737
+
738
+ * OwlWorks
739
+
740
+ * Ilmari Karonen
741
+
742
+ * Espartaco Palma
743
+
744
+ * Kazuma Shibasaka
745
+
746
+ * Yuki Kurihara
747
+
748
+ ## 3.0.0 - 2018-06-06
749
+
750
+ ### Fixes
751
+
752
+ * Fixed a bug that header isn't returned for empty row.
753
+ [GitHub#37][Patch by Grace Lee]
754
+
755
+ ### Thanks
756
+
757
+ * Grace Lee
758
+
759
+ ## 1.0.2 - 2018-05-03
760
+
761
+ ### Improvements
762
+
763
+ * Split file for CSV::VERSION
764
+
765
+ * Code cleanup: Split csv.rb into a more manageable structure
766
+ [GitHub#19][Patch by Espartaco Palma]
767
+ [GitHub#20][Patch by Steven Daniels]
768
+
769
+ * Use CSV::MalformedCSVError for invalid encoding line
770
+ [GitHub#26][Reported by deepj]
771
+
772
+ * Support implicit Row <-> Array conversion
773
+ [Bug #10013][ruby-core:63582][Reported by Dawid Janczak]
774
+
775
+ * Update class docs
776
+ [GitHub#32][Patch by zverok]
777
+
778
+ * Add `Row#each_pair`
779
+ [GitHub#33][Patch by zverok]
780
+
781
+ * Improve CSV performance
782
+ [GitHub#30][Patch by Watson]
783
+
784
+ * Add :nil_value and :empty_value option
785
+
786
+ ### Fixes
787
+
788
+ * Fix a bug that "bom|utf-8" doesn't work
789
+ [GitHub#23][Reported by Pavel Lobashov]
790
+
791
+ * `CSV::Row#to_h`, `#to_hash`: uses the same value as `Row#[]`
792
+ [Bug #14482][Reported by tomoya ishida]
793
+
794
+ * Make row separator detection more robust
795
+ [GitHub#25][Reported by deepj]
796
+
797
+ * Fix a bug that too much separator when col_sep is `" "`
798
+ [Bug #8784][ruby-core:63582][Reported by Sylvain Laperche]
799
+
800
+ ### Thanks
801
+
802
+ * Espartaco Palma
803
+
804
+ * Steven Daniels
805
+
806
+ * deepj
807
+
808
+ * Dawid Janczak
809
+
810
+ * zverok
811
+
812
+ * Watson
813
+
814
+ * Pavel Lobashov
815
+
816
+ * tomoya ishida
817
+
818
+ * Sylvain Laperche
819
+
820
+ * Ryunosuke Sato
821
+
822
+ ## 1.0.1 - 2018-02-09
823
+
824
+ ### Improvements
825
+
826
+ * `CSV::Table#delete`: Added bulk delete support. You can delete
827
+ multiple rows and columns at once.
828
+ [GitHub#4][Patch by Vladislav]
829
+
830
+ * Updated Gem description.
831
+ [GitHub#11][Patch by Marcus Stollsteimer]
832
+
833
+ * Code cleanup.
834
+ [GitHub#12][Patch by Marcus Stollsteimer]
835
+ [GitHub#14][Patch by Steven Daniels]
836
+ [GitHub#18][Patch by takkanm]
837
+
838
+ * `CSV::Table#dig`: Added.
839
+ [GitHub#15][Patch by Tomohiro Ogoke]
840
+
841
+ * `CSV::Row#dig`: Added.
842
+ [GitHub#15][Patch by Tomohiro Ogoke]
843
+
844
+ * Added ISO 8601 support to date time converter.
845
+ [GitHub#16]
846
+
847
+ ### Fixes
848
+
849
+ * Fixed wrong `CSV::VERSION`.
850
+ [GitHub#10][Reported by Marcus Stollsteimer]
851
+
852
+ * `CSV.generate`: Fixed a regression bug that `String` argument is
853
+ ignored.
854
+ [GitHub#13][Patch by pavel]
855
+
856
+ ### Thanks
857
+
858
+ * Vladislav
859
+
860
+ * Marcus Stollsteimer
861
+
862
+ * Steven Daniels
863
+
864
+ * takkanm
865
+
866
+ * Tomohiro Ogoke
867
+
868
+ * pavel