diff --git a/object.c b/object.c index 3c0e41dcee..eaf30e0dff 100644 --- a/object.c +++ b/object.c @@ -3651,15 +3651,18 @@ rb_String(VALUE val) /* * call-seq: - * String(arg) -> string + * String(object) -> object or new_string * - * Returns arg as a String. + * Returns an array converted from +object+. * - * First tries to call its to_str method, then its to_s method. + * Tries to convert +object+ to a string + * using +to_str+ first and +to_s+ second: * - * String(self) #=> "main" - * String(self.class) #=> "Object" - * String(123456) #=> "123456" + * String([0, 1, 2]) # => "[0, 1, 2]" + * String(0..5) # => "0..5" + * String({foo: 0, bar: 1}) # => "{:foo=>0, :bar=>1}" + * + * Raises +TypeError+ if +object+ cannot be converted to a string. */ static VALUE @@ -3684,22 +3687,22 @@ rb_Array(VALUE val) /* * call-seq: - * Array(arg) -> array + * Array(object) -> object or new_array * - * Returns +arg+ as an Array. + * Returns an array converted from +object+. * - * First tries to call to_ary on +arg+, then to_a. - * If +arg+ does not respond to to_ary or to_a, - * returns an Array of length 1 containing +arg+. + * Tries to convert +object+ to an array + * using +to_ary+ first and +to_a+ second: * - * If to_ary or to_a returns something other than - * an Array, raises a TypeError. + * Array([0, 1, 2]) # => [0, 1, 2] + * Array({foo: 0, bar: 1}) # => [[:foo, 0], [:bar, 1]] + * Array(0..4) # => [0, 1, 2, 3, 4] + * + * Returns +object+ in an array, [object], + * if +object+ cannot be converted: + * + * Array(:foo) # => [:foo] * - * Array(["a", "b"]) #=> ["a", "b"] - * Array(1..5) #=> [1, 2, 3, 4, 5] - * Array(key: :value) #=> [[:key, :value]] - * Array(nil) #=> [] - * Array(1) #=> [1] */ static VALUE @@ -3728,16 +3731,24 @@ rb_Hash(VALUE val) /* * call-seq: - * Hash(arg) -> hash + * Hash(object) -> object or new_hash * - * Converts arg to a Hash by calling - * arg.to_hash. Returns an empty Hash when - * arg is nil or []. + * Returns a hash converted from +object+. + * + * - If +object+ is: + * + * - A hash, returns +object+. + * - An empty array or +nil+, returns an empty hash. + * + * - Otherwise, if object.to_hash returns a hash, returns that hash. + * - Otherwise, returns TypeError. + * + * Examples: + * + * Hash({foo: 0, bar: 1}) # => {:foo=>0, :bar=>1} + * Hash(nil) # => {} + * Hash([]) # => {} * - * Hash([]) #=> {} - * Hash(nil) #=> {} - * Hash(key: :value) #=> {:key => :value} - * Hash([1, 2, 3]) #=> TypeError */ static VALUE