[#35631] [Ruby 1.9 - Bug #4558][Open] TestSocket#test_closed_read fails after r31230 — Tomoyuki Chikanaga <redmine@...>

23 messages 2011/04/06

[#35632] [Ruby 1.9 - Bug #4559][Open] Proc#== does not match the documented behaviour — Adam Prescott <redmine@...>

13 messages 2011/04/06

[#35637] [Ruby 1.9 - Bug #4561][Open] 1.9.2 requires parentheses around argument of method call in an array, where 1.8.7 did not — Dave Schweisguth <redmine@...>

9 messages 2011/04/07

[#35734] [Ruby 1.9 - Feature #4574][Open] Numeric#within — redmine@...

16 messages 2011/04/13

[#35753] [Ruby 1.9 - Bug #4576][Open] Range#step miss the last value, if end-exclusive and has float number — redmine@...

61 messages 2011/04/14
[#39566] [Ruby 1.9 - Bug #4576] Range#step miss the last value, if end-exclusive and has float number — Marc-Andre Lafortune <ruby-core@...> 2011/09/15

[#39590] [Ruby 1.9 - Bug #4576] Range#step miss the last value, if end-exclusive and has float number — Marc-Andre Lafortune <ruby-core@...> 2011/09/16

[#39593] Re: [Ruby 1.9 - Bug #4576] Range#step miss the last value, if end-exclusive and has float number — Tanaka Akira <akr@...> 2011/09/16

2011/9/17 Marc-Andre Lafortune <[email protected]>:

[#39608] Re: [Ruby 1.9 - Bug #4576] Range#step miss the last value, if end-exclusive and has float number — Masahiro TANAKA <masa16.tanaka@...> 2011/09/17

I have not been watching ruby-core, but let me give a comment for this issu=

[#35765] [Ruby 1.9 - Bug #4579][Open] SecureRandom + OpenSSL may repeat with fork — redmine@...

27 messages 2011/04/15

[#35866] [Ruby 1.9 - Bug #4603][Open] lib/csv.rb: when the :encoding parameter is not provided, the encoding of CSV data is treated as ASCII-8BIT — yu nobuoka <nobuoka@...>

13 messages 2011/04/24

[#35879] [Ruby 1.9 - Bug #4610][Open] Proc#curry behavior is inconsistent with lambdas containing default argument values — Joshua Ballanco <jballanc@...>

11 messages 2011/04/25

[#35883] [Ruby 1.9 - Bug #4611][Open] [BUG] Segementation fault reported — Deryl Doucette <me@...>

15 messages 2011/04/25

[#35895] [Ruby 1.9 - Feature #4614][Open] [RFC/PATCH] thread_pthread.c: lower RUBY_STACK_MIN_LIMIT to 64K — Eric Wong <normalperson@...>

10 messages 2011/04/25

[ruby-core:35911] [Ruby 1.9 - Bug #4603] lib/csv.rb: when the :encoding parameter is not provided, the encoding of CSV data is treated as ASCII-8BIT

From: yu nobuoka <nobuoka@...>
Date: 2011-04-26 20:13:10 UTC
List: ruby-core #35911
Issue #4603 has been updated by yu nobuoka.


Hi,

Nobuyoshi Nakada wrote:
>  Now fixed so that universal_newline: false can work.  What's
>  about the following patch?
>  
>  diff --git i/lib/csv.rb w/lib/csv.rb
>  index 1aad2f3..d51cb55 100644
>  --- i/lib/csv.rb
>  +++ w/lib/csv.rb
>  @@ -1334,10 +1334,18 @@ class CSV
>     def self.open(*args)
>       # find the +options+ Hash
>       options = if args.last.is_a? Hash then args.pop else Hash.new end
>  -    # default to a binary open mode
>  -    args << "rb" if args.size == 1 and !options.key?(:mode)
>  -    # wrap a File opened with the remaining +args+
>  -    csv     = new(File.open(*args, options), options)
>  +    # wrap a File opened with the remaining +args+ with no newline
>  +    # decorator
>  +    file_opts = {universal_newline: false}.merge(options)
>  +    begin
>  +      f = File.open(*args, file_opts)
>  +    rescue ArgumentError => e
>  +      throw unless /needs binmode/ =~ e.message and args.size == 1
>  +      args << "rb"
>  +      file_opts = {encoding: Encoding.default_external}.merge(file_opts)
>  +      retry
>  +    end
>  +    csv = new(f, options)

In +rescue+ clause, a +throw+ expression is used. Is it correct?
I think a +raise+ expression should be used instead. Or my idea is wrong...?
----------------------------------------
Bug #4603: lib/csv.rb: when the :encoding parameter is not provided, the encoding of CSV data is treated as ASCII-8BIT
http://redmine.ruby-lang.org/issues/4603

Author: yu nobuoka
Status: Assigned
Priority: Normal
Assignee: James Gray
Category: lib
Target version: 1.9.2
ruby -v: -


This issue is involved in three methods, CSV::open, CSV::read and CSV::foreach.

The document of CSV::read says "This method also understands an additional 
:encoding parameter that you can use to specify the Encoding of the data 
in the file to be read. You must provide this unless your data is in 
Encoding::default_external()."
However, when the :encoding parameter is not provided, the encoding of the CSV data 
is treated as ASCII-8BIT. Not as Encoding.default_external.
CSV::open and CSV::foreach are also similar. 

I think the actual behaviour of these methods doesn't conform to the document of these.


-- 
http://redmine.ruby-lang.org

In This Thread