summaryrefslogtreecommitdiff
path: root/hash.c
diff options
context:
space:
mode:
authorBurdetteLamar <burdettelamar@yahoo.com>2019-12-16 16:58:53 -0600
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-12-22 23:12:15 +0900
commit890c834ec6bb03fab4fee6f5b14f99660a64d207 (patch)
tree68f952a9c2fa05bd1641834448d710a36d35c723 /hash.c
parent54be15f3256fd2dbb0d5d7962e9dfac2b87c797b (diff)
Enhancements for ENV doc
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/2757
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c68
1 files changed, 55 insertions, 13 deletions
diff --git a/hash.c b/hash.c
index 79f69f63be..82383e9a93 100644
--- a/hash.c
+++ b/hash.c
@@ -5217,9 +5217,17 @@ rb_env_size(VALUE ehash, VALUE args, VALUE eobj)
* ENV.each_key { |name| block } -> ENV
* ENV.each_key -> Enumerator
*
- * Yields each environment variable name.
- *
- * An Enumerator is returned if no block is given.
+ * Yields each environment variable name:
+ * ENV.replace('foo' => '0', 'bar' => '1') # => ENV
+ * names = []
+ * ENV.each_key { |name| names.push(name) } # => ENV
+ * names # => ["bar", "foo"]
+ *
+ * Returns an Enumerator if no block given:
+ * e = ENV.each_key # => #<Enumerator: {"bar"=>"1", "foo"=>"0"}:each_key>
+ * names = []
+ * e.each { |name| names.push(name) } # => ENV
+ * names # => ["bar", "foo"]
*/
static VALUE
env_each_key(VALUE ehash)
@@ -5258,9 +5266,16 @@ env_values(void)
* call-seq:
* ENV.values -> Array
*
- * Returns every environment variable value as an Array
+ * Returns all environment variable values in an Array:
+ * ENV.replace('foo' => '0', 'bar' => '1')
+ * ENV.values # => ['1', '0']
+ * The order of the values is OS-dependent.
+ * See {About Ordering}[#class-ENV-label-About+Ordering].
+ *
+ * Returns the empty Array if ENV is empty:
+ * ENV.clear
+ * ENV.values # => []
*/
-
static VALUE
env_f_values(VALUE _)
{
@@ -5272,9 +5287,17 @@ env_f_values(VALUE _)
* ENV.each_value { |value| block } -> ENV
* ENV.each_value -> Enumerator
*
- * Yields each environment variable +value+.
- *
- * An Enumerator is returned if no block was given.
+ * Yields each environment variable value:
+ * ENV.replace('foo' => '0', 'bar' => '1') # => ENV
+ * values = []
+ * ENV.each_value { |value| values.push(value) } # => ENV
+ * values # => ["1", "0"]
+ *
+ * Returns an Enumerator if no block given:
+ * e = ENV.each_value # => #<Enumerator: {"bar"=>"1", "foo"=>"0"}:each_value>
+ * values = []
+ * e.each { |value| values.push(value) } # => ENV
+ * values # => ["1", "0"]
*/
static VALUE
env_each_value(VALUE ehash)
@@ -5297,9 +5320,16 @@ env_each_value(VALUE ehash)
* ENV.each_pair { |name, value| block } -> ENV
* ENV.each_pair -> Enumerator
*
- * Yields each environment variable +name+ and +value+.
+ * Yields each environment variable name and its value as a 2-element Array:
+ * h = {}
+ * ENV.each_pair { |name, value| h[name] = value } # => ENV
+ * h # => {"bar"=>"1", "foo"=>"0"}
*
- * If no block is given an Enumerator is returned.
+ * Returns an Enumerator if no block given:
+ * h = {}
+ * e = ENV.each_pair # => #<Enumerator: {"bar"=>"1", "foo"=>"0"}:each_pair>
+ * e.each { |name, value| h[name] = value } # => ENV
+ * h # => {"bar"=>"1", "foo"=>"0"}
*/
static VALUE
env_each_pair(VALUE ehash)
@@ -5340,9 +5370,21 @@ env_each_pair(VALUE ehash)
* ENV.reject! { |name, value| block } -> ENV or nil
* ENV.reject! -> Enumerator
*
- * Equivalent to ENV.delete_if but returns +nil+ if no changes were made.
- *
- * Returns an Enumerator if no block was given.
+ * Similar to ENV.delete_if, but returns +nil+ if no changes were made.
+ *
+ * Deletes each environment variable for which the block returns a truthy value,
+ * returning ENV (if any deletions) or +nil+ (if not):
+ * ENV.replace('foo' => '0', 'bar' => '1', 'baz' => '2')
+ * ENV.reject! { |name, value| name.start_with?('b') } # => ENV
+ * ENV # => {"foo"=>"0"}
+ * ENV.reject! { |name, value| name.start_with?('b') } # => nil
+ *
+ * Returns an Enumerator if no block given:
+ * ENV.replace('foo' => '0', 'bar' => '1', 'baz' => '2')
+ * e = ENV.reject! # => #<Enumerator: {"bar"=>"1", "baz"=>"2", "foo"=>"0"}:reject!>
+ * e.each { |name, value| name.start_with?('b') } # => ENV
+ * ENV # => {"foo"=>"0"}
+ * e.each { |name, value| name.start_with?('b') } # => nil
*/
static VALUE
env_reject_bang(VALUE ehash)