csv 3.2.8 → 3.2.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c64817c16c8991fc2596875101449b5452326fe91bd05e4bb6a66213113525d6
4
- data.tar.gz: 19d6d80d6959f6cde0ac651774ea795dbd0f949135cae021fef3983d94248f9c
3
+ metadata.gz: d7dabc413b85090aa7c9c93ca318de9adb1c0c2d94273f4e8d23d73d2882680a
4
+ data.tar.gz: 8e8484c342de0947a59af726ab20d7a88a2ae766a9e62139edb6c5650d144d0a
5
5
  SHA512:
6
- metadata.gz: 556f6582468d4a3c2994c12c25dba73b8db65e1a10f7306b9b5bc1fa345f47bf7872db1c603ddcd1a0eb359e7857c51a9874be2231dc821730ae62d15604c3b7
7
- data.tar.gz: 348a25f4c1bb8e4fe0d71dc944e0a26165627803cb2528fc067642827fd3c253bda48aba179d3575950a7244bd4e8edf2eed9a99101952a07256a3f4f9d1e7fe
6
+ metadata.gz: 28edfb536bed667f78a618a3d13f5b305d1749879efae7256aaa8a0fa84694f2df7cc285851976b8b2f45ce9a7ae5741f9bd4277c3ea32c9a27fd2379a0f1be2
7
+ data.tar.gz: 7fe44532cde1e9022da25f798b696ad51b7c81bc3bd64cfd97610d13f073f141886bfdd03e9bb710bab2d3e7fda71a47cfea0ea7da8d3f6c06b38edfc295e364
data/NEWS.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # News
2
2
 
3
+ ## 3.2.9 - 2024-03-22
4
+
5
+ ### Fixes
6
+
7
+ * Fixed a parse bug that wrong result may be happen when:
8
+
9
+ * `:skip_lines` is used
10
+ * `:row_separator` is `"\r\n"`
11
+ * There is a line that includes `\n` as a column value
12
+
13
+ Reported by Ryo Tsukamoto.
14
+
15
+ GH-296
16
+
17
+ ### Thanks
18
+
19
+ * Ryo Tsukamoto
20
+
3
21
  ## 3.2.8 - 2023-11-08
4
22
 
5
23
  ### Improvements
data/README.md CHANGED
@@ -30,8 +30,8 @@ end
30
30
 
31
31
  ## Documentation
32
32
 
33
- - [API](https://ruby-doc.org/stdlib/libdoc/csv/rdoc/CSV.html): all classes, methods, and constants.
34
- - [Recipes](https://ruby-doc.org/core/doc/csv/recipes/recipes_rdoc.html): specific code for specific tasks.
33
+ - [API](https://ruby.github.io/csv/): all classes, methods, and constants.
34
+ - [Recipes](https://ruby.github.io/csv/doc/csv/recipes/recipes_rdoc.html): specific code for specific tasks.
35
35
 
36
36
  ## Development
37
37
 
data/lib/csv/parser.rb CHANGED
@@ -220,6 +220,15 @@ class CSV
220
220
  end
221
221
  # trace(__method__, :repos, start, buffer)
222
222
  @scanner.pos = start
223
+ last_scanner, last_start, last_buffer = @keeps.last
224
+ # Drop the last buffer when the last buffer is the same data
225
+ # in the last keep. If we keep it, we have duplicated data
226
+ # by the next keep_back.
227
+ if last_scanner == @scanner and
228
+ last_buffer and
229
+ last_buffer == last_scanner.string.byteslice(last_start, start)
230
+ @keeps.last[2] = nil
231
+ end
223
232
  end
224
233
  read_chunk if @scanner.eos?
225
234
  end
@@ -892,18 +901,15 @@ class CSV
892
901
  def skip_needless_lines
893
902
  return unless @skip_lines
894
903
 
895
- until @scanner.eos?
896
- @scanner.keep_start
897
- line = @scanner.scan_all(@not_line_end) || "".encode(@encoding)
904
+ @scanner.keep_start
905
+ @scanner.each_line(@row_separator) do |line|
898
906
  line << @row_separator if parse_row_end
899
- if skip_line?(line)
900
- @lineno += 1
901
- @scanner.keep_drop
902
- else
903
- @scanner.keep_back
904
- return
905
- end
907
+ break unless skip_line?(line)
908
+ @lineno += 1
909
+ @scanner.keep_drop
910
+ @scanner.keep_start
906
911
  end
912
+ @scanner.keep_back
907
913
  end
908
914
 
909
915
  def skip_line?(line)
data/lib/csv/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  class CSV
4
4
  # The version of the installed library.
5
- VERSION = "3.2.8"
5
+ VERSION = "3.2.9"
6
6
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.8
4
+ version: 3.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Edward Gray II
8
8
  - Kouhei Sutou
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2023-11-08 00:00:00.000000000 Z
11
+ date: 2024-03-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
@@ -128,7 +127,6 @@ licenses:
128
127
  - Ruby
129
128
  - BSD-2-Clause
130
129
  metadata: {}
131
- post_install_message:
132
130
  rdoc_options:
133
131
  - "--main"
134
132
  - README.md
@@ -145,8 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
143
  - !ruby/object:Gem::Version
146
144
  version: '0'
147
145
  requirements: []
148
- rubygems_version: 3.5.0.dev
149
- signing_key:
146
+ rubygems_version: 3.6.0.dev
150
147
  specification_version: 4
151
148
  summary: CSV Reading and Writing
152
149
  test_files: []