summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--NEWS19
-rw-r--r--hash.c29
-rw-r--r--lib/ostruct.rb29
-rw-r--r--object.c18
-rw-r--r--struct.c26
6 files changed, 18 insertions, 116 deletions
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 <ruby-core@marc-andre.ca>
* lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler
[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>
* 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
@@ -1058,23 +1058,6 @@ nil_to_a(VALUE obj)
}
/*
- * 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<RSTRUCT_LEN(s); i++) {
- rb_hash_aset(h, rb_ary_entry(members, i), RSTRUCT_PTR(s)[i]);
- }
- return h;
-}
-
/* :nodoc: */
VALUE
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_alias(rb_cStruct, "to_s", "inspect");
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, "size", rb_struct_size, 0);
rb_define_method(rb_cStruct, "length", rb_struct_size, 0);