mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
merges r25353 and r25362 from trunk into ruby_1_9_1.
-- * lib/csv.rb (CSV#read_to_char): set encoding and verify data which read from io before encode it to @encoding. * lib/csv.rb (CSV#raw_encoding): add to get @io's encoding. * lib/csv.rb (CSV#read_io): add to read string and set @io's encoding. -- * lib/csv.rb (CSV#raw_encoding): returns ASCII-8BIT when the io doesn't have encoding. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@25999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
28e26e7f65
commit
fba7863392
3 changed files with 41 additions and 14 deletions
15
ChangeLog
15
ChangeLog
|
|
@ -1,3 +1,18 @@
|
|||
Fri Oct 16 12:03:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* lib/csv.rb (CSV#raw_encoding): returns ASCII-8BIT when the io
|
||||
doesn't have encoding.
|
||||
|
||||
Fri Oct 16 03:15:52 2009 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* lib/csv.rb (CSV#read_to_char): set encoding and verify data
|
||||
which read from io before encode it to @encoding.
|
||||
|
||||
* lib/csv.rb (CSV#raw_encoding): add to get @io's encoding.
|
||||
|
||||
* lib/csv.rb (CSV#read_io): add to read string and set @io's
|
||||
encoding.
|
||||
|
||||
Mon Sep 28 22:33:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* dln.c (aix_loaderror): needs format string.
|
||||
|
|
|
|||
32
lib/csv.rb
32
lib/csv.rb
|
|
@ -1550,13 +1550,8 @@ class CSV
|
|||
# create the IO object we will read from
|
||||
@io = if data.is_a? String then StringIO.new(data) else data end
|
||||
# honor the IO encoding if we can, otherwise default to ASCII-8BIT
|
||||
@encoding = if @io.respond_to? :internal_encoding
|
||||
@io.internal_encoding || @io.external_encoding
|
||||
elsif @io.is_a? StringIO
|
||||
@io.string.encoding
|
||||
end
|
||||
@encoding ||= Encoding.default_internal || Encoding.default_external
|
||||
#
|
||||
@encoding = raw_encoding || Encoding.default_internal || Encoding.default_external
|
||||
#
|
||||
# prepare for building safe regular expressions in the target encoding,
|
||||
# if we can transcode the needed characters
|
||||
#
|
||||
|
|
@ -1989,7 +1984,6 @@ class CSV
|
|||
sample = read_to_char(1024)
|
||||
sample += read_to_char(1) if sample[-1..-1] == encode_str("\r") and
|
||||
not @io.eof?
|
||||
|
||||
# try to find a standard separator
|
||||
if sample =~ encode_re("\r\n?|\n")
|
||||
@row_sep = $&
|
||||
|
|
@ -2272,8 +2266,9 @@ class CSV
|
|||
#
|
||||
def read_to_char(bytes)
|
||||
return "" if @io.eof?
|
||||
data = @io.read(bytes)
|
||||
data = read_io(bytes)
|
||||
begin
|
||||
raise unless data.valid_encoding?
|
||||
encoded = encode_str(data)
|
||||
raise unless encoded.valid_encoding?
|
||||
return encoded
|
||||
|
|
@ -2281,11 +2276,28 @@ class CSV
|
|||
if @io.eof? or data.size >= bytes + 10
|
||||
return data
|
||||
else
|
||||
data += @io.read(1)
|
||||
data += read_io(1)
|
||||
retry
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def raw_encoding
|
||||
if @io.respond_to? :internal_encoding
|
||||
@io.internal_encoding || @io.external_encoding
|
||||
elsif @io.is_a? StringIO
|
||||
@io.string.encoding
|
||||
elsif @io.respond_to? :encoding
|
||||
@io.encoding
|
||||
else
|
||||
Encoding::ASCII_8BIT
|
||||
end
|
||||
end
|
||||
|
||||
def read_io(bytes)
|
||||
@io.read(bytes).force_encoding(raw_encoding)
|
||||
end
|
||||
end
|
||||
|
||||
# Another name for CSV::instance().
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
#define RUBY_VERSION "1.9.1"
|
||||
#define RUBY_PATCHLEVEL 355
|
||||
#define RUBY_PATCHLEVEL 356
|
||||
#define RUBY_VERSION_MAJOR 1
|
||||
#define RUBY_VERSION_MINOR 9
|
||||
#define RUBY_VERSION_TEENY 1
|
||||
|
||||
#define RUBY_RELEASE_YEAR 2009
|
||||
#define RUBY_RELEASE_MONTH 11
|
||||
#define RUBY_RELEASE_DAY 27
|
||||
#define RUBY_RELEASE_DATE "2009-11-27"
|
||||
#define RUBY_RELEASE_MONTH 12
|
||||
#define RUBY_RELEASE_DAY 5
|
||||
#define RUBY_RELEASE_DATE "2009-12-05"
|
||||
|
||||
#ifdef RUBY_EXTERN
|
||||
RUBY_EXTERN const char ruby_version[];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue