mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* class.c (rb_obj_singleton_methods): should not go up to
ancestors unless the recursive flag is set. [ruby-list:38007] * hash.c (env_each_key): use env_keys to avoid environment modify on the fly. * hash.c (env_each_value): use env_values for safety. * hash.c (env_each): allocate environment array first. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
baf02b9a63
commit
cdacb127fc
6 changed files with 453 additions and 337 deletions
20
ChangeLog
20
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
Sat Aug 2 03:30:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* class.c (rb_obj_singleton_methods): should not go up to
|
||||
ancestors unless the recursive flag is set. [ruby-list:38007]
|
||||
|
||||
* hash.c (env_each_key): use env_keys to avoid environment modify
|
||||
on the fly.
|
||||
|
||||
* hash.c (env_each_value): use env_values for safety.
|
||||
|
||||
* hash.c (env_each): allocate environment array first.
|
||||
|
||||
Fri Aug 2 03:20:00 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
|
||||
|
||||
* lib/yaml/store.rb (YAML::Store#initialize): filename is first
|
||||
|
@ -65,9 +77,6 @@ Fri Aug 1 13:45:14 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
|||
|
||||
Fri Aug 1 09:54:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* eval.c (BEGIN_CALLARGS): should not always reset ruby_iter,
|
||||
need to restore previous value. [ruby-talk:77577]
|
||||
|
||||
* array.c (rb_ary_fill): array length may be changed during the
|
||||
block execution. [ruby-talk:77579]
|
||||
|
||||
|
@ -114,6 +123,11 @@ Thu Jul 31 04:59:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
|||
|
||||
* numeric.c (rb_num_coerce_relop): export function.
|
||||
|
||||
Thu Jul 31 08:18:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
|
||||
|
||||
* lib/test/unit.rb: A useful return code is now set if tests fail when
|
||||
running automatically using the Console::TestRunner.
|
||||
|
||||
Thu Jul 31 00:17:19 2003 Shugo Maeda <shugo@ruby-lang.org>
|
||||
|
||||
* lib/net/ftp.rb (return_code): obsolete.
|
||||
|
|
4
class.c
4
class.c
|
@ -622,12 +622,12 @@ rb_obj_singleton_methods(argc, argv, obj)
|
|||
}
|
||||
klass = CLASS_OF(obj);
|
||||
list = st_init_numtable();
|
||||
while (klass && FL_TEST(klass, FL_SINGLETON)) {
|
||||
if (klass && FL_TEST(klass, FL_SINGLETON)) {
|
||||
st_foreach(RCLASS(klass)->m_tbl, method_entry, (st_data_t)list);
|
||||
klass = RCLASS(klass)->super;
|
||||
}
|
||||
if (RTEST(recur)) {
|
||||
while (klass && TYPE(klass) == T_ICLASS) {
|
||||
while (klass && (FL_TEST(klass, FL_SINGLETON) || TYPE(klass) == T_ICLASS)) {
|
||||
st_foreach(RCLASS(klass)->m_tbl, method_entry, (st_data_t)list);
|
||||
klass = RCLASS(klass)->super;
|
||||
}
|
||||
|
|
701
doc/NEWS
701
doc/NEWS
|
@ -1,44 +1,128 @@
|
|||
This file is not actively maintained. See ChangeLog for recent changes.
|
||||
= command line options
|
||||
|
||||
: -W option
|
||||
|
||||
new option to specify warning level. -W0 to shut up warnings, -W1 for normal level,
|
||||
-W2 for verbose level. -w equals to -W2.
|
||||
|
||||
: Marshal to use marshal_dump and marshal_load
|
||||
= language syntax
|
||||
|
||||
if a dumping object responds to 'marshal_dump', Marshal.dump calls
|
||||
it, and dumps object returned. Marshal.load allocates a new instance
|
||||
using "allocate", then calls its "marshal_load" with dumped data.
|
||||
: arbitrary delimited string array
|
||||
|
||||
: lib/un
|
||||
%W(...) notation, word list literal like %w(...) with the
|
||||
exception that #{} interpolation is allowed.
|
||||
|
||||
Imported. Used like 'ruby -run -e cp -- -p foo bar'. Nest, isn't it?
|
||||
: expression interpolation in strings
|
||||
|
||||
: lib/webrick
|
||||
Now arbitrary statements are allowed inside #{} interpolation
|
||||
without escapes. In other hand, they can no longer access to
|
||||
variables defined in eval.
|
||||
|
||||
Imported. Generic Internet server kit.
|
||||
: negative number literals
|
||||
|
||||
Digits preceded minus sign is a literal integer.
|
||||
|
||||
: array expansion
|
||||
|
||||
Fixed with the following behavior:
|
||||
|
||||
a = *[1]
|
||||
p a #=> [1]
|
||||
|
||||
Now 1-element array in rhs is expanded properly.
|
||||
|
||||
a = *[1]
|
||||
p a #=> 1
|
||||
|
||||
: break and next
|
||||
|
||||
Extended to take an optional expression, which is used as a value
|
||||
for termination.
|
||||
|
||||
= language core
|
||||
|
||||
: $stdin, $stdout, $stderr
|
||||
|
||||
can be assignable again. the original stdio are preserved as STDIN,
|
||||
STDOUT, STDERR.
|
||||
|
||||
: multiple Tk interpreter
|
||||
: allocation framework
|
||||
|
||||
to allow safe Tk, etc.
|
||||
any instance of class can be allocated by class.allocate,
|
||||
(except for a few classes).
|
||||
|
||||
: ext/openssl
|
||||
: comparison of exception classes in a rescue clause
|
||||
|
||||
Imported.
|
||||
changed to use Module#=== for comparing $! with the exception
|
||||
class specified in each rescue clause.
|
||||
|
||||
: ext/io/wait
|
||||
as the previous behavior was to use kind_of?, the effect is limited
|
||||
to the SystemCallError case. SystemCallError.=== has been newly
|
||||
defined to return true when the two have the same errno. With this
|
||||
change, SystemCallError's with the same errno, such as Errno::EAGAIN
|
||||
and Errno::EWOULDBLOCK, can both be rescued by listing just one of
|
||||
them.
|
||||
|
||||
Imported.
|
||||
: constants lookup
|
||||
|
||||
: ext/bigdecimal
|
||||
improved at the performance of searching by using an internal hash
|
||||
table.
|
||||
|
||||
Imported.
|
||||
: expression parenthesis in the first argument
|
||||
|
||||
altered to get the following code (note the space after p):
|
||||
|
||||
p ("xx"*2).to_i
|
||||
|
||||
Interpreted as:
|
||||
|
||||
p (("xx"*2).to_i)
|
||||
|
||||
Instead of:
|
||||
|
||||
(p("xx"*2)).to_i
|
||||
|
||||
: implicit comparison in conditional expressions
|
||||
|
||||
Obsoleted except when it is used in -e.
|
||||
|
||||
: between Range and $.
|
||||
Use explicit comparison instead.
|
||||
|
||||
: between Regexp and $_
|
||||
Use the unary method ~/re/ instead.
|
||||
|
||||
: to_str
|
||||
|
||||
added to get objects which define to_str() treated as String's.
|
||||
|
||||
now almost all the built-in methods try each argument with to_str()
|
||||
when they expect it to be a String.
|
||||
|
||||
foo = Object.new
|
||||
class <<foo
|
||||
def to_str
|
||||
"foo"
|
||||
end
|
||||
end
|
||||
p File.open(foo)
|
||||
=> -:7:in `open': wrong argument type Object (expected String) (TypeError)
|
||||
ruby 1.6.4 (2001-04-19) [i586-linux]
|
||||
=> -:7:in `open': No such file or directory - "foo" (Errno::ENOENT)
|
||||
ruby 1.7.0 (2001-05-02) [i586-linux]
|
||||
|
||||
: multiple assignment behavior
|
||||
|
||||
Fixed so that "*a = nil" results in "a == []".
|
||||
|
||||
= changes in core class library
|
||||
|
||||
: Marshal to use marshal_dump and marshal_load
|
||||
|
||||
if a dumping object responds to 'marshal_dump', Marshal.dump calls
|
||||
it, and dumps object returned. Marshal.load allocates a new instance
|
||||
using "allocate", then calls its "marshal_load" with dumped data.
|
||||
Marshal format version is now 4.8 (was 4.6 in 1.6.8).
|
||||
|
||||
: Thread#group
|
||||
|
||||
|
@ -57,37 +141,6 @@ This file is not actively maintained. See ChangeLog for recent changes.
|
|||
|
||||
added.
|
||||
|
||||
: ext/Win32API/lib/win32/registry
|
||||
|
||||
added.
|
||||
|
||||
: lib/open-uri
|
||||
|
||||
Imported. This is an easy-to-use wrapper for net/http and net/ftp.
|
||||
|
||||
: lib/tmpdir
|
||||
|
||||
imported. add Dir::tmpdir() to determine the temporary directory.
|
||||
|
||||
: lib/cgi.rb
|
||||
|
||||
cgi[name] returns CGI::QueryExtension::Value that wraps string
|
||||
value, no longer array.
|
||||
|
||||
: ext/syck
|
||||
: lib/yaml
|
||||
|
||||
Imported.
|
||||
|
||||
: lib/rexml
|
||||
|
||||
Imported.
|
||||
|
||||
: lib/xmlrpc
|
||||
: lib/gserver
|
||||
|
||||
Imported
|
||||
|
||||
: Class#inherited
|
||||
|
||||
Method is called when Class is inherited by another class.
|
||||
|
@ -119,235 +172,16 @@ This file is not actively maintained. See ChangeLog for recent changes.
|
|||
"101".to_i(0) => 101
|
||||
"0b101".to_i(0) => 5
|
||||
"0101".to_i(0) => 65
|
||||
"0x101".to_i(0) => 1
|
||||
"0x101".to_i(0) => 257
|
||||
|
||||
: Set class (set.rb)
|
||||
: SystemCallError
|
||||
|
||||
Imported.
|
||||
|
||||
: OptionParser module
|
||||
|
||||
Imported. Command line options utility library.
|
||||
|
||||
: parser
|
||||
|
||||
%W(...) notation, word list literal like %w(...) with the
|
||||
exception that #{} interpolation is allowed.
|
||||
|
||||
: parser
|
||||
|
||||
Now arbitrary statements are allowed inside #{} interpolation
|
||||
without escapes. In other hand, they can no longer access to
|
||||
variables defined in eval.
|
||||
|
||||
: parser
|
||||
|
||||
Digits preceded minus sign is a literal integer.
|
||||
SystemCallError's "===" match (used in rescue also) is now based on its errno.
|
||||
|
||||
: IO::sysopen
|
||||
|
||||
New method to get a raw file descriptor.
|
||||
|
||||
: TCPServer#accept, UNIXServer#accept, Socket#accept
|
||||
|
||||
New methods to return an accepted socket fd.
|
||||
|
||||
: Date and DateTime
|
||||
|
||||
lib/date.rb now provides both Date and DateTime.
|
||||
|
||||
Some methods have been renamed. But the old names are still alive.
|
||||
|
||||
Some new methods have been added (Date::parse, Date#strftime, etc.).
|
||||
|
||||
Date#mjd now returns the chronological modified Julian day number.
|
||||
|
||||
All facilities about tjd have been removed.
|
||||
|
||||
: Thread#join
|
||||
|
||||
Optional argument limits maximum time to wait the thread in second.
|
||||
And returns nil if timed out.
|
||||
|
||||
: Array#filter
|
||||
|
||||
Previously deprecated, now removed. Use Array#collect!.
|
||||
|
||||
: dl module
|
||||
|
||||
Imported. An interface to the dynamic linker.
|
||||
|
||||
: IO#sysseek
|
||||
|
||||
Added.
|
||||
|
||||
: IO
|
||||
|
||||
64bit off_t support by Janathan Baker.
|
||||
|
||||
: abort()
|
||||
|
||||
Takes optional terminate message argument.
|
||||
|
||||
: iconv module
|
||||
|
||||
Imported. Wrapper library of (({iconv})).
|
||||
|
||||
: IO.fsync
|
||||
|
||||
New method that copies all in-memory parts of a file to disk and
|
||||
waits until the deice reports that all parts are on stable storage.
|
||||
Implemented with fsync(2) or equivalent.
|
||||
|
||||
: Dir#pos=
|
||||
|
||||
Returns the new position instead of self.
|
||||
|
||||
: Dir::glob
|
||||
|
||||
Now accepts optional FNM_* flags via the second argument, whereas
|
||||
Dir::[] doesn't.
|
||||
|
||||
Dir.glob("makefile", File::FNM_CASEFOLD) #=> ['Makefile', 'makefile']
|
||||
|
||||
: fileutils module
|
||||
|
||||
Imported. File utility library.
|
||||
|
||||
: racc runtime module
|
||||
|
||||
Imported. Racc runtime library. (Racc is a parser generator for ruby)
|
||||
|
||||
: lib/tsort
|
||||
|
||||
Imported. Topological sorting library.
|
||||
|
||||
: ext/stringio
|
||||
|
||||
Imported. Pseudo (({IO})) class from/to (({String})).
|
||||
|
||||
: strscan module
|
||||
|
||||
Imported. Fast string scanner library.
|
||||
|
||||
: Array#pack, String#unpack
|
||||
|
||||
Allows comment in template strings.
|
||||
|
||||
: Array#pack, String#unpack
|
||||
|
||||
New templates 'q' and 'Q' for 64bit integer (signed and unsigned respectively).
|
||||
|
||||
: Array#new
|
||||
|
||||
Now takes block to fill initial values. E.g.
|
||||
|
||||
Array.new(10) { |i| i + 1 }
|
||||
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
|
||||
: Array#fill
|
||||
|
||||
Takes block to get the values to fill.
|
||||
|
||||
: Array#fetch
|
||||
|
||||
Takes block to get the default value.
|
||||
|
||||
: Hash#update
|
||||
|
||||
Takes block to resolve key conflict.
|
||||
|
||||
: IO#fsync
|
||||
|
||||
Added.
|
||||
|
||||
: Array expansion
|
||||
|
||||
Fixed with the following behavior:
|
||||
|
||||
a = *[1]
|
||||
p a #=> [1]
|
||||
|
||||
Now 1-element array in rhs is expanded properly.
|
||||
|
||||
a = *[1]
|
||||
p a #=> 1
|
||||
|
||||
: allocation framework
|
||||
|
||||
any instance of class can be allocated by class.allocate,
|
||||
(except a few classes).
|
||||
|
||||
: break and next
|
||||
|
||||
Extended to take an optional expression, which is used as a value
|
||||
for termination. [experimental]
|
||||
|
||||
: comparison of exception classes in a rescue clause
|
||||
|
||||
Changed to use Module#=== for comparing $! with the exception
|
||||
class specified in each rescue clause.
|
||||
|
||||
As the previous behavior was to use kind_of?, the effect is limited
|
||||
to the SystemCallError case. SystemCallError.=== has been newly
|
||||
defined to return true when the two have the same errno. With this
|
||||
change, SystemCallError's with the same errno, such as Errno::EAGAIN
|
||||
and Errno::EWOULDBLOCK, can both be rescued by listing just one of
|
||||
them.
|
||||
|
||||
: constants lookup
|
||||
|
||||
Improved at the performance of searching by using an internal hash
|
||||
table.
|
||||
|
||||
: expression parenthesis in the first argument
|
||||
|
||||
Experimentally altered to get the following code (note the space
|
||||
after p):
|
||||
|
||||
p ("xx"*2).to_i
|
||||
|
||||
Interpreted as:
|
||||
|
||||
p (("xx"*2).to_i)
|
||||
|
||||
Instead of:
|
||||
|
||||
(p("xx"*2)).to_i
|
||||
|
||||
: implicit comparison in conditional expressions
|
||||
|
||||
Obsoleted except when it is used in -e.
|
||||
|
||||
: between Range and $.
|
||||
Use explicit comparison instead.
|
||||
|
||||
: between Regexp and $_
|
||||
Use the unary method ~/re/ instead.
|
||||
|
||||
: to_str
|
||||
|
||||
Added to get objects which define to_str() treated as String's.
|
||||
|
||||
Now almost all the built-in methods try each argument with to_str()
|
||||
when they expect it to be a String.
|
||||
|
||||
foo = Object.new
|
||||
class <<foo
|
||||
def to_str
|
||||
"foo"
|
||||
end
|
||||
end
|
||||
p File.open(foo)
|
||||
=> -:7:in `open': wrong argument type Object (expected String) (TypeError)
|
||||
ruby 1.6.4 (2001-04-19) [i586-linux]
|
||||
=> -:7:in `open': No such file or directory - "foo" (Errno::ENOENT)
|
||||
ruby 1.7.0 (2001-05-02) [i586-linux]
|
||||
|
||||
: pp module
|
||||
|
||||
Imported. Prity Printing library.
|
||||
|
||||
: open
|
||||
|
||||
Extended so that when the third argument is permission flags it
|
||||
|
@ -381,10 +215,74 @@ This file is not actively maintained. See ChangeLog for recent changes.
|
|||
Beware that this behavior is not guaranteed to continue in the
|
||||
future. Do not rely on its return value. [ruby-dev:12506]
|
||||
|
||||
: Curses
|
||||
: Thread#join
|
||||
|
||||
Updated. New methods and constants for using the mouse, character
|
||||
attributes, colors and key codes have been added.
|
||||
Optional argument limits maximum time to wait the thread in second.
|
||||
And returns nil if timed out.
|
||||
|
||||
: Array#filter
|
||||
|
||||
Previously deprecated, now removed. Use Array#collect!.
|
||||
|
||||
: IO#sysseek
|
||||
|
||||
Added.
|
||||
|
||||
: IO
|
||||
|
||||
64bit off_t support by Janathan Baker.
|
||||
|
||||
: abort()
|
||||
|
||||
Takes optional terminate message argument.
|
||||
|
||||
: IO.fsync
|
||||
|
||||
New method that copies all in-memory parts of a file to disk and
|
||||
waits until the device reports that all parts are on stable storage.
|
||||
Implemented with fsync(2) or equivalent.
|
||||
|
||||
: Dir#pos=
|
||||
|
||||
Returns the new position instead of self.
|
||||
|
||||
: Dir::glob
|
||||
|
||||
Now accepts optional FNM_* flags via the second argument, whereas
|
||||
Dir::[] doesn't.
|
||||
|
||||
Dir.glob("makefile", File::FNM_CASEFOLD) #=> ['Makefile', 'makefile']
|
||||
|
||||
: Array#pack, String#unpack
|
||||
|
||||
Allows comment in template strings.
|
||||
|
||||
: Array#pack, String#unpack
|
||||
|
||||
New templates 'q' and 'Q' for 64bit integer (signed and unsigned respectively).
|
||||
|
||||
: Array#new
|
||||
|
||||
Now takes block to fill initial values. E.g.
|
||||
|
||||
Array.new(10) { |i| i + 1 }
|
||||
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
|
||||
: Array#fill
|
||||
|
||||
Takes block to get the values to fill.
|
||||
|
||||
: Array#fetch
|
||||
|
||||
Takes block to get the default value.
|
||||
|
||||
: Hash#update
|
||||
|
||||
Takes block to resolve key conflict.
|
||||
|
||||
: IO#fsync
|
||||
|
||||
Added.
|
||||
|
||||
: Dir#path
|
||||
|
||||
|
@ -501,15 +399,6 @@ This file is not actively maintained. See ChangeLog for recent changes.
|
|||
|
||||
Extended to take block.
|
||||
|
||||
: Multiple assignment behavior
|
||||
|
||||
Fixed so that "*a = nil" results in "a == []".
|
||||
|
||||
: Net::HTTP
|
||||
|
||||
New version of Net::HTTP has introduced seriously incompatible
|
||||
changes. For details, see document embedded in net/http.rb itself.
|
||||
|
||||
: NameError and NoMethodError
|
||||
|
||||
Moved and now NoMethodError < NameError < StandardError.
|
||||
|
@ -560,14 +449,6 @@ This file is not actively maintained. See ChangeLog for recent changes.
|
|||
|
||||
Added. This module has module functions Signal.trap and Signal.list.
|
||||
|
||||
: Socket.pack_sockaddr_in, Socket.unpack_sockaddr_in
|
||||
|
||||
Added. Utility for direct Socket access.
|
||||
|
||||
: Socket.pack_sockaddr_un, Socket.unpack_sockaddr_un
|
||||
|
||||
Added. Utility for direct Socket access.
|
||||
|
||||
: String#[regexp, nth]
|
||||
|
||||
Extended to accepts optional second argument.
|
||||
|
@ -627,16 +508,6 @@ This file is not actively maintained. See ChangeLog for recent changes.
|
|||
|
||||
Added.
|
||||
|
||||
: TCPServer#listen, UNIXServer#listen
|
||||
|
||||
Added.
|
||||
|
||||
: TCPSocket.new
|
||||
: TCPSocket.open
|
||||
|
||||
Extended to take an address and a port number for the local side in
|
||||
optional 3rd and 4th arguments.
|
||||
|
||||
: Time
|
||||
|
||||
Extended to accept a negative time_t. (Only when the platform
|
||||
|
@ -650,3 +521,233 @@ This file is not actively maintained. See ChangeLog for recent changes.
|
|||
|
||||
Made to return "UTC" under gmtime. It used to return a platform
|
||||
dependent value, typically "GMT", in 1.6 and prior.
|
||||
|
||||
= changes in bundled libraries
|
||||
|
||||
: lib/cgi.rb
|
||||
|
||||
cgi[name] returns CGI::QueryExtension::Value that wraps string
|
||||
value, no longer array.
|
||||
|
||||
: lib/timeout
|
||||
|
||||
timeout "function" wrapped in Timeout module.
|
||||
|
||||
: TCPServer#accept, UNIXServer#accept, Socket#accept
|
||||
|
||||
New methods to return an accepted socket fd.
|
||||
|
||||
: Date and DateTime
|
||||
|
||||
lib/date.rb now provides both Date and DateTime.
|
||||
|
||||
Some methods have been renamed. But the old names are still alive.
|
||||
|
||||
Some new methods have been added (Date::parse, Date#strftime, etc.).
|
||||
|
||||
Date#mjd now returns the chronological modified Julian day number.
|
||||
|
||||
All facilities about tjd have been removed.
|
||||
|
||||
: Curses
|
||||
|
||||
Updated. New methods and constants for using the mouse, character
|
||||
attributes, colors and key codes have been added.
|
||||
|
||||
: Net::HTTP
|
||||
|
||||
New version of Net::HTTP has introduced seriously incompatible
|
||||
changes. For details, see document embedded in net/http.rb itself.
|
||||
|
||||
: Socket.pack_sockaddr_in, Socket.unpack_sockaddr_in
|
||||
|
||||
Added. Utility for direct Socket access.
|
||||
|
||||
: Socket.pack_sockaddr_un, Socket.unpack_sockaddr_un
|
||||
|
||||
Added. Utility for direct Socket access.
|
||||
|
||||
: TCPServer#listen, UNIXServer#listen
|
||||
|
||||
Added.
|
||||
|
||||
: TCPSocket.new
|
||||
: TCPSocket.open
|
||||
|
||||
Extended to take an address and a port number for the local side in
|
||||
optional 3rd and 4th arguments.
|
||||
|
||||
= new bundled library
|
||||
|
||||
: ext/bigdecimal
|
||||
|
||||
variable precision decimal number
|
||||
|
||||
: ext/dl
|
||||
|
||||
an interface to the dynamic linker.
|
||||
|
||||
: ext/io/wait
|
||||
|
||||
IO wait methods.
|
||||
|
||||
: ext/iconv
|
||||
|
||||
wrapper library of (({iconv})).
|
||||
|
||||
: ext/openssl
|
||||
|
||||
OpenSSL for Ruby
|
||||
|
||||
: ext/racc/cparse
|
||||
|
||||
Racc runtime library in C. (Racc is a parser generator for ruby)
|
||||
|
||||
: ext/stringio
|
||||
|
||||
Pseudo (({IO})) class from/to (({String})).
|
||||
|
||||
: ext/strscan
|
||||
|
||||
Fast string scanner library.
|
||||
|
||||
: ext/syck
|
||||
|
||||
fast YAML parser.
|
||||
|
||||
: lib/benchmark
|
||||
|
||||
Ruby scripts benchmarker
|
||||
|
||||
: lib/cgi/session/pstore
|
||||
|
||||
cgi/session back-end using pstore
|
||||
|
||||
: lib/csv
|
||||
|
||||
reads/writes CVS files.
|
||||
|
||||
: lib/date/format
|
||||
|
||||
strftime for Date class
|
||||
|
||||
: lib/drb
|
||||
|
||||
dRuby or distributed Ruby
|
||||
|
||||
: lib/fileutils
|
||||
|
||||
file utility library.
|
||||
|
||||
: lib/gserver
|
||||
|
||||
generic server used by xmlrpc
|
||||
|
||||
: lib/ipaddr
|
||||
|
||||
manipulates IP address.
|
||||
|
||||
: lib/multi-tk
|
||||
|
||||
to allow safe Tk, etc.
|
||||
|
||||
: lib/open-uri
|
||||
|
||||
easy-to-use wrapper for net/http and net/ftp
|
||||
|
||||
: lib/optparse
|
||||
|
||||
command line options utility library
|
||||
|
||||
: lib/pathname
|
||||
|
||||
handles pathname in OO manner.
|
||||
|
||||
: lib/pp
|
||||
|
||||
prettyprinter for Ruby objects
|
||||
|
||||
: lib/prettyprint
|
||||
|
||||
implements prettyprint algorithm.
|
||||
|
||||
: lib/profiler
|
||||
|
||||
library to implement -r "profile"
|
||||
|
||||
: lib/racc/parser
|
||||
|
||||
RACC parser generator runtime in Ruby.
|
||||
|
||||
: lib/scanf
|
||||
|
||||
scan string and retrieve object with format
|
||||
|
||||
: lib/set
|
||||
|
||||
Set class
|
||||
|
||||
: lib/runit
|
||||
|
||||
RubyUnit compatible layer for test/unit
|
||||
|
||||
: lib/test/unit
|
||||
|
||||
unit testing framework for Ruby
|
||||
|
||||
: lib/tmpdir
|
||||
|
||||
get temporary directory path.
|
||||
|
||||
: lib/tsort
|
||||
|
||||
topological sorting library.
|
||||
|
||||
: lib/rexml
|
||||
|
||||
REXML XML library
|
||||
|
||||
: lib/webrick
|
||||
|
||||
generic internet server kit
|
||||
|
||||
: lib/xmlrpc
|
||||
|
||||
simple RPC via XML
|
||||
|
||||
: lib/un
|
||||
|
||||
used like 'ruby -run -e cp -- -p foo bar'. neat, isn't it?
|
||||
|
||||
: lib/win32/registry
|
||||
|
||||
win32/registry is registry accessor
|
||||
|
||||
: lib/yaml
|
||||
|
||||
YAML Ain't Mark-up Language
|
||||
|
||||
= removed libraries
|
||||
|
||||
: lib/ftplib
|
||||
|
||||
use net/ftp instead.
|
||||
|
||||
: lib/telnet
|
||||
|
||||
use net/telnet instead.
|
||||
|
||||
= new port
|
||||
|
||||
: WindowsCE port
|
||||
: Win32 BCC
|
||||
|
||||
= interpreter implementation
|
||||
|
||||
: garbage collector
|
||||
|
||||
faster, but uses more memory for the worst case.
|
||||
|
||||
: string concatenation
|
||||
|
||||
faster by avoiding too frequent realloc(3).
|
||||
|
|
8
eval.c
8
eval.c
|
@ -4099,16 +4099,20 @@ rb_yield_0(val, self, klass, flags, avalue)
|
|||
int len = 0;
|
||||
if (avalue) {
|
||||
len = RARRAY(val)->len;
|
||||
if (len == 0) {
|
||||
val = Qnil;
|
||||
goto multi_values;
|
||||
}
|
||||
if (len == 1) {
|
||||
val = RARRAY(val)->ptr[0];
|
||||
}
|
||||
else {
|
||||
goto mult_values;
|
||||
goto multi_values;
|
||||
}
|
||||
}
|
||||
else if (val == Qundef) {
|
||||
val = Qnil;
|
||||
mult_values:
|
||||
multi_values:
|
||||
{
|
||||
NODE *curr = ruby_current_node;
|
||||
ruby_current_node = block->var;
|
||||
|
|
54
hash.c
54
hash.c
|
@ -1296,21 +1296,16 @@ env_keys()
|
|||
}
|
||||
|
||||
static VALUE
|
||||
env_each_key(hash)
|
||||
VALUE hash;
|
||||
env_each_key(ehash)
|
||||
VALUE ehash;
|
||||
{
|
||||
char **env;
|
||||
VALUE keys = env_keys();
|
||||
long i;
|
||||
|
||||
env = GET_ENVIRON(environ);
|
||||
while (*env) {
|
||||
char *s = strchr(*env, '=');
|
||||
if (s) {
|
||||
rb_yield(env_str_new(*env, s-*env));
|
||||
}
|
||||
env++;
|
||||
for (i=0; i<RARRAY(keys)->len; i++) {
|
||||
rb_yield(RARRAY(keys)->ptr[i]);
|
||||
}
|
||||
FREE_ENVIRON(environ);
|
||||
return Qnil;
|
||||
return ehash;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -1332,40 +1327,41 @@ env_values()
|
|||
}
|
||||
|
||||
static VALUE
|
||||
env_each_value(hash)
|
||||
VALUE hash;
|
||||
env_each_value(ehash)
|
||||
VALUE ehash;
|
||||
{
|
||||
char **env;
|
||||
VALUE values = env_values();
|
||||
long i;
|
||||
|
||||
env = GET_ENVIRON(environ);
|
||||
while (*env) {
|
||||
char *s = strchr(*env, '=');
|
||||
if (s) {
|
||||
rb_yield(env_str_new2(s+1));
|
||||
}
|
||||
env++;
|
||||
for (i=0; i<RARRAY(values)->len; i++) {
|
||||
rb_yield(RARRAY(values)->ptr[i]);
|
||||
}
|
||||
FREE_ENVIRON(environ);
|
||||
return Qnil;
|
||||
return ehash;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
env_each(hash)
|
||||
VALUE hash;
|
||||
env_each(ehash)
|
||||
VALUE ehash;
|
||||
{
|
||||
char **env;
|
||||
VALUE ary = rb_ary_new();
|
||||
long i;
|
||||
|
||||
env = GET_ENVIRON(environ);
|
||||
while (*env) {
|
||||
char *s = strchr(*env, '=');
|
||||
if (s) {
|
||||
rb_yield_values(2, env_str_new(*env, s-*env),
|
||||
env_str_new2(s+1));
|
||||
rb_ary_push(ary, env_str_new(*env, s-*env));
|
||||
rb_ary_push(ary, env_str_new2(s+1));
|
||||
}
|
||||
env++;
|
||||
}
|
||||
FREE_ENVIRON(environ);
|
||||
return Qnil;
|
||||
|
||||
for (i=0; i<RARRAY(ary)->len; i+=2) {
|
||||
rb_yield_values(2, RARRAY(ary)->ptr[i], RARRAY(ary)->ptr[i+1]);
|
||||
}
|
||||
return ehash;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
|
@ -175,7 +175,8 @@ at_exit {
|
|||
runners = {
|
||||
'--console' => proc do |suite|
|
||||
require 'test/unit/ui/console/testrunner'
|
||||
Test::Unit::UI::Console::TestRunner.run(suite)
|
||||
passed = Test::Unit::UI::Console::TestRunner.run(suite).passed?
|
||||
exit(passed ? 0 : 1)
|
||||
end,
|
||||
'--gtk' => proc do |suite|
|
||||
require 'test/unit/ui/gtk/testrunner'
|
||||
|
|
Loading…
Add table
Reference in a new issue