diff --git a/ChangeLog b/ChangeLog index f31bad018b..c11fa7abd8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -53,19 +53,6 @@ Mon Apr 16 12:17:12 2012 Marc-Andre Lafortune * lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler [Bug #6290] [rubyspec:4b9573d7613] -Mon Apr 16 12:13:42 2012 Marc-Andre Lafortune - - * 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 * lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#download): should diff --git a/NEWS b/NEWS index 55c4c41289..e390b9f09a 100644 --- a/NEWS +++ b/NEWS @@ -21,13 +21,7 @@ with all sufficient information, see the ChangeLog file. * added method: * added Enumerable#lazy method for lazy enumeration. - * ENV - * aliased method: - * ENV.to_h is a new alias for ENV.to_hash - * Hash - * added method: - * added Hash#to_h as explicit conversion method, like Array#to_a. * extended method: * 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 loaded. - * NilClass - * added method: - * added nil.to_h which returns {} - * Signal * incompatible changes: * Signal.trap raises ArgumentError when :SEGV, :BUS, :ILL, :FPE, :VTALRM are specified. - * Struct - * added method: - * added Struct#to_h returning values with keys corresponding to the - instance variable names. - * Time * change return value: * 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_imaps_port -* ostruct - * new methods: - * OpenStruct#to_h converts the struct to a hash. - * pathname * extended method: * Pathname#find returns an enumerator if no block is given. diff --git a/hash.c b/hash.c index 3427ec0eb8..1b495c788c 100644 --- a/hash.c +++ b/hash.c @@ -1452,30 +1452,6 @@ rb_hash_to_hash(VALUE 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 keys_i(VALUE key, VALUE value, VALUE ary) { @@ -3078,8 +3054,7 @@ env_index(VALUE dmy, VALUE value) /* * call-seq: - * ENV.to_hash -> hash - * ENV.to_h -> hash + * ENV.to_hash -> Hash * * 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,"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,"inspect", rb_hash_inspect, 0); 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,"value?", env_has_value, 1); 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,"rassoc", env_rassoc, 1); diff --git a/lib/ostruct.rb b/lib/ostruct.rb index da0cf0bb0c..21bda73c37 100644 --- a/lib/ostruct.rb +++ b/lib/ostruct.rb @@ -101,27 +101,32 @@ class OpenStruct end # - # Converts the OpenStruct to a hash with keys representing - # each attribute (as symbols) and their corresponding values - # Example: + # Provides marshalling support for use by the Marshal library. Returning the + # underlying Hash table that contains the functions defined as the keys and + # the values assigned to them. # - # require 'ostruct' - # data = OpenStruct.new("country" => "Australia", :population => 20_000_000) - # data.to_h # => {:country => "Australia", :population => 20000000 } + # require 'ostruct' # - def to_h - @table.dup - end - + # person = OpenStruct.new + # person.name = 'John Smith' + # person.age = 70 # - # Provides marshalling support for use by the Marshal library. + # person.marshal_dump # => { :name => 'John Smith', :age => 70 } # def marshal_dump @table 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) @table = x diff --git a/object.c b/object.c index 3c4445cb59..59bdea0c18 100644 --- a/object.c +++ b/object.c @@ -1057,23 +1057,6 @@ nil_to_a(VALUE obj) 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: * 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_s", nil_to_s, 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, "&", false_and, 1); rb_define_method(rb_cNilClass, "|", false_or, 1); diff --git a/struct.c b/struct.c index e958a78df8..7fa50f14ee 100644 --- a/struct.c +++ b/struct.c @@ -586,31 +586,6 @@ rb_struct_to_a(VALUE 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