csv 1.0.2 → 3.2.7

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 (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