Revert r35339-35343 because of no tests.
* hash.c: Alias ENV.to_h to ENV.to_hash [ref #6276] * lib/ostruct.rb: Add OpenStruct#to_h [Feature #6276] * struct.c: Add Struct#to_h [Feature #6276] * object.c: Add NilClass#to_h [Feature #6276] * hash.c: Add Hash#to_h [Feature #6276] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
cc6ab53f59
commit
62c9ecfa12
13
ChangeLog
13
ChangeLog
@ -53,19 +53,6 @@ Mon Apr 16 12:17:12 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
|
|||||||
* lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler
|
* lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler
|
||||||
[Bug #6290] [rubyspec:4b9573d7613]
|
[Bug #6290] [rubyspec:4b9573d7613]
|
||||||
|
|
||||||
Mon Apr 16 12:13:42 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
|
|
||||||
|
|
||||||
* hash.c: Alias ENV.to_h to ENV.to_hash [ref #6276]
|
|
||||||
[rubyspec:6587eead7cd1]
|
|
||||||
* lib/ostruct.rb: Add OpenStruct#to_h [Feature #6276]
|
|
||||||
[ref #1400] [rubyspec:9e0250b2fc6f]
|
|
||||||
* struct.c: Add Struct#to_h [Feature #6276]
|
|
||||||
[ref #4862] [rubyspec:2082ef46d46e]
|
|
||||||
* object.c: Add NilClass#to_h [Feature #6276]
|
|
||||||
[ref #5008] [rubyspec:dc5ecddbd608]
|
|
||||||
* hash.c: Add Hash#to_h [Feature #6276]
|
|
||||||
[rubyspec:84b7fe3f24d2]
|
|
||||||
|
|
||||||
Mon Apr 16 09:42:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
|
Mon Apr 16 09:42:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
|
|
||||||
* lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#download): should
|
* lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#download): should
|
||||||
|
19
NEWS
19
NEWS
@ -21,13 +21,7 @@ with all sufficient information, see the ChangeLog file.
|
|||||||
* added method:
|
* added method:
|
||||||
* added Enumerable#lazy method for lazy enumeration.
|
* added Enumerable#lazy method for lazy enumeration.
|
||||||
|
|
||||||
* ENV
|
|
||||||
* aliased method:
|
|
||||||
* ENV.to_h is a new alias for ENV.to_hash
|
|
||||||
|
|
||||||
* Hash
|
* Hash
|
||||||
* added method:
|
|
||||||
* added Hash#to_h as explicit conversion method, like Array#to_a.
|
|
||||||
* extended method:
|
* extended method:
|
||||||
* Hash#default_proc= can be passed nil to clear the default proc.
|
* Hash#default_proc= can be passed nil to clear the default proc.
|
||||||
|
|
||||||
@ -47,20 +41,11 @@ with all sufficient information, see the ChangeLog file.
|
|||||||
* added LoadError#path method to return the file name that could not be
|
* added LoadError#path method to return the file name that could not be
|
||||||
loaded.
|
loaded.
|
||||||
|
|
||||||
* NilClass
|
|
||||||
* added method:
|
|
||||||
* added nil.to_h which returns {}
|
|
||||||
|
|
||||||
* Signal
|
* Signal
|
||||||
* incompatible changes:
|
* incompatible changes:
|
||||||
* Signal.trap raises ArgumentError when :SEGV, :BUS, :ILL, :FPE, :VTALRM
|
* Signal.trap raises ArgumentError when :SEGV, :BUS, :ILL, :FPE, :VTALRM
|
||||||
are specified.
|
are specified.
|
||||||
|
|
||||||
* Struct
|
|
||||||
* added method:
|
|
||||||
* added Struct#to_h returning values with keys corresponding to the
|
|
||||||
instance variable names.
|
|
||||||
|
|
||||||
* Time
|
* Time
|
||||||
* change return value:
|
* change return value:
|
||||||
* Time#to_s returned encoding defaults to US-ASCII but automatically
|
* Time#to_s returned encoding defaults to US-ASCII but automatically
|
||||||
@ -78,10 +63,6 @@ with all sufficient information, see the ChangeLog file.
|
|||||||
* Net::IMAP.default_ssl_port
|
* Net::IMAP.default_ssl_port
|
||||||
* Net::IMAP.default_imaps_port
|
* Net::IMAP.default_imaps_port
|
||||||
|
|
||||||
* ostruct
|
|
||||||
* new methods:
|
|
||||||
* OpenStruct#to_h converts the struct to a hash.
|
|
||||||
|
|
||||||
* pathname
|
* pathname
|
||||||
* extended method:
|
* extended method:
|
||||||
* Pathname#find returns an enumerator if no block is given.
|
* Pathname#find returns an enumerator if no block is given.
|
||||||
|
29
hash.c
29
hash.c
@ -1452,30 +1452,6 @@ rb_hash_to_hash(VALUE hash)
|
|||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* call-seq:
|
|
||||||
* hsh.to_h -> hsh or new_hash
|
|
||||||
*
|
|
||||||
* Returns +self+. If called on a subclass of Hash, converts
|
|
||||||
* the receiver to a Hash object.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static VALUE
|
|
||||||
rb_hash_to_h(VALUE hash)
|
|
||||||
{
|
|
||||||
if (rb_obj_class(hash) != rb_cHash) {
|
|
||||||
VALUE ret = rb_hash_new();
|
|
||||||
if (!RHASH_EMPTY_P(hash))
|
|
||||||
RHASH(ret)->ntbl = st_copy(RHASH(hash)->ntbl);
|
|
||||||
if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
|
|
||||||
FL_SET(ret, HASH_PROC_DEFAULT);
|
|
||||||
}
|
|
||||||
RHASH_IFNONE(ret) = RHASH_IFNONE(hash);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
return hash;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
keys_i(VALUE key, VALUE value, VALUE ary)
|
keys_i(VALUE key, VALUE value, VALUE ary)
|
||||||
{
|
{
|
||||||
@ -3078,8 +3054,7 @@ env_index(VALUE dmy, VALUE value)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* ENV.to_hash -> hash
|
* ENV.to_hash -> Hash
|
||||||
* ENV.to_h -> hash
|
|
||||||
*
|
*
|
||||||
* Creates a hash with a copy of the environment variables.
|
* Creates a hash with a copy of the environment variables.
|
||||||
*
|
*
|
||||||
@ -3358,7 +3333,6 @@ Init_Hash(void)
|
|||||||
rb_define_method(rb_cHash,"rehash", rb_hash_rehash, 0);
|
rb_define_method(rb_cHash,"rehash", rb_hash_rehash, 0);
|
||||||
|
|
||||||
rb_define_method(rb_cHash,"to_hash", rb_hash_to_hash, 0);
|
rb_define_method(rb_cHash,"to_hash", rb_hash_to_hash, 0);
|
||||||
rb_define_method(rb_cHash,"to_h", rb_hash_to_h, 0);
|
|
||||||
rb_define_method(rb_cHash,"to_a", rb_hash_to_a, 0);
|
rb_define_method(rb_cHash,"to_a", rb_hash_to_a, 0);
|
||||||
rb_define_method(rb_cHash,"inspect", rb_hash_inspect, 0);
|
rb_define_method(rb_cHash,"inspect", rb_hash_inspect, 0);
|
||||||
rb_define_alias(rb_cHash, "to_s", "inspect");
|
rb_define_alias(rb_cHash, "to_s", "inspect");
|
||||||
@ -3469,7 +3443,6 @@ Init_Hash(void)
|
|||||||
rb_define_singleton_method(envtbl,"key?", env_has_key, 1);
|
rb_define_singleton_method(envtbl,"key?", env_has_key, 1);
|
||||||
rb_define_singleton_method(envtbl,"value?", env_has_value, 1);
|
rb_define_singleton_method(envtbl,"value?", env_has_value, 1);
|
||||||
rb_define_singleton_method(envtbl,"to_hash", env_to_hash, 0);
|
rb_define_singleton_method(envtbl,"to_hash", env_to_hash, 0);
|
||||||
rb_define_singleton_method(envtbl,"to_h", env_to_hash, 0);
|
|
||||||
rb_define_singleton_method(envtbl,"assoc", env_assoc, 1);
|
rb_define_singleton_method(envtbl,"assoc", env_assoc, 1);
|
||||||
rb_define_singleton_method(envtbl,"rassoc", env_rassoc, 1);
|
rb_define_singleton_method(envtbl,"rassoc", env_rassoc, 1);
|
||||||
|
|
||||||
|
@ -101,27 +101,32 @@ class OpenStruct
|
|||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Converts the OpenStruct to a hash with keys representing
|
# Provides marshalling support for use by the Marshal library. Returning the
|
||||||
# each attribute (as symbols) and their corresponding values
|
# underlying Hash table that contains the functions defined as the keys and
|
||||||
# Example:
|
# the values assigned to them.
|
||||||
#
|
#
|
||||||
# require 'ostruct'
|
# require 'ostruct'
|
||||||
# data = OpenStruct.new("country" => "Australia", :population => 20_000_000)
|
|
||||||
# data.to_h # => {:country => "Australia", :population => 20000000 }
|
|
||||||
#
|
#
|
||||||
def to_h
|
# person = OpenStruct.new
|
||||||
@table.dup
|
# person.name = 'John Smith'
|
||||||
end
|
# person.age = 70
|
||||||
|
|
||||||
#
|
#
|
||||||
# Provides marshalling support for use by the Marshal library.
|
# person.marshal_dump # => { :name => 'John Smith', :age => 70 }
|
||||||
#
|
#
|
||||||
def marshal_dump
|
def marshal_dump
|
||||||
@table
|
@table
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Provides marshalling support for use by the Marshal library.
|
# Provides marshalling support for use by the Marshal library. Accepting
|
||||||
|
# a Hash of keys and values which will be used to populate the internal table
|
||||||
|
#
|
||||||
|
# require 'ostruct'
|
||||||
|
#
|
||||||
|
# event = OpenStruct.new
|
||||||
|
# hash = { 'time' => Time.now, 'title' => 'Birthday Party' }
|
||||||
|
# event.marshal_load(hash)
|
||||||
|
# event.title # => 'Birthday Party'
|
||||||
#
|
#
|
||||||
def marshal_load(x)
|
def marshal_load(x)
|
||||||
@table = x
|
@table = x
|
||||||
|
18
object.c
18
object.c
@ -1057,23 +1057,6 @@ nil_to_a(VALUE obj)
|
|||||||
return rb_ary_new2(0);
|
return rb_ary_new2(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Document-method: to_h
|
|
||||||
*
|
|
||||||
* call-seq:
|
|
||||||
* nil.to_h -> {}
|
|
||||||
*
|
|
||||||
* Always returns an empty hash.
|
|
||||||
*
|
|
||||||
* nil.to_h #=> {}
|
|
||||||
*/
|
|
||||||
|
|
||||||
static VALUE
|
|
||||||
nil_to_h(VALUE obj)
|
|
||||||
{
|
|
||||||
return rb_hash_new();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* nil.inspect -> "nil"
|
* nil.inspect -> "nil"
|
||||||
@ -2913,7 +2896,6 @@ Init_Object(void)
|
|||||||
rb_define_method(rb_cNilClass, "to_f", nil_to_f, 0);
|
rb_define_method(rb_cNilClass, "to_f", nil_to_f, 0);
|
||||||
rb_define_method(rb_cNilClass, "to_s", nil_to_s, 0);
|
rb_define_method(rb_cNilClass, "to_s", nil_to_s, 0);
|
||||||
rb_define_method(rb_cNilClass, "to_a", nil_to_a, 0);
|
rb_define_method(rb_cNilClass, "to_a", nil_to_a, 0);
|
||||||
rb_define_method(rb_cNilClass, "to_h", nil_to_h, 0);
|
|
||||||
rb_define_method(rb_cNilClass, "inspect", nil_inspect, 0);
|
rb_define_method(rb_cNilClass, "inspect", nil_inspect, 0);
|
||||||
rb_define_method(rb_cNilClass, "&", false_and, 1);
|
rb_define_method(rb_cNilClass, "&", false_and, 1);
|
||||||
rb_define_method(rb_cNilClass, "|", false_or, 1);
|
rb_define_method(rb_cNilClass, "|", false_or, 1);
|
||||||
|
26
struct.c
26
struct.c
@ -586,31 +586,6 @@ rb_struct_to_a(VALUE s)
|
|||||||
return rb_ary_new4(RSTRUCT_LEN(s), RSTRUCT_PTR(s));
|
return rb_ary_new4(RSTRUCT_LEN(s), RSTRUCT_PTR(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* call-seq:
|
|
||||||
* struct.to_h -> hash
|
|
||||||
*
|
|
||||||
* Returns the values for this instance as a hash with keys
|
|
||||||
* corresponding to the instance variable name.
|
|
||||||
*
|
|
||||||
* Customer = Struct.new(:name, :address, :zip)
|
|
||||||
* joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
|
|
||||||
* joe.to_h[:address] #=> "123 Maple, Anytown NC"
|
|
||||||
*/
|
|
||||||
|
|
||||||
static VALUE
|
|
||||||
rb_struct_to_h(VALUE s)
|
|
||||||
{
|
|
||||||
VALUE h = rb_hash_new();
|
|
||||||
VALUE members = rb_struct_members(s);
|
|
||||||
long i;
|
|
||||||
|
|
||||||
for (i=0; i<RSTRUCT_LEN(s); i++) {
|
|
||||||
rb_hash_aset(h, rb_ary_entry(members, i), RSTRUCT_PTR(s)[i]);
|
|
||||||
}
|
|
||||||
return h;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* :nodoc: */
|
/* :nodoc: */
|
||||||
VALUE
|
VALUE
|
||||||
rb_struct_init_copy(VALUE copy, VALUE s)
|
rb_struct_init_copy(VALUE copy, VALUE s)
|
||||||
@ -986,7 +961,6 @@ Init_Struct(void)
|
|||||||
rb_define_method(rb_cStruct, "inspect", rb_struct_inspect, 0);
|
rb_define_method(rb_cStruct, "inspect", rb_struct_inspect, 0);
|
||||||
rb_define_alias(rb_cStruct, "to_s", "inspect");
|
rb_define_alias(rb_cStruct, "to_s", "inspect");
|
||||||
rb_define_method(rb_cStruct, "to_a", rb_struct_to_a, 0);
|
rb_define_method(rb_cStruct, "to_a", rb_struct_to_a, 0);
|
||||||
rb_define_method(rb_cStruct, "to_h", rb_struct_to_h, 0);
|
|
||||||
rb_define_method(rb_cStruct, "values", rb_struct_to_a, 0);
|
rb_define_method(rb_cStruct, "values", rb_struct_to_a, 0);
|
||||||
rb_define_method(rb_cStruct, "size", rb_struct_size, 0);
|
rb_define_method(rb_cStruct, "size", rb_struct_size, 0);
|
||||||
rb_define_method(rb_cStruct, "length", rb_struct_size, 0);
|
rb_define_method(rb_cStruct, "length", rb_struct_size, 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user