doc/rdoc/core/classes/Hash.html in facets-2.5.0 vs doc/rdoc/core/classes/Hash.html in facets-2.5.1
- old
+ new
@@ -56,10 +56,11 @@
<table cellspacing="0" cellpadding="2">
<tr valign="top">
<td>In:</td>
<td>
<a href="../files/lib/core/facets/to_hash_rb.html">lib/core/facets/to_hash.rb</a>
+<a href="../files/lib/core/facets/hash/new_with_rb.html">lib/core/facets/hash/new_with.rb</a>
<a href="../files/lib/core/facets/hash/zipnew_rb.html">lib/core/facets/hash/zipnew.rb</a>
<a href="../files/lib/core/facets/hash/update_values_rb.html">lib/core/facets/hash/update_values.rb</a>
<a href="../files/lib/core/facets/hash/alias_rb.html">lib/core/facets/hash/alias.rb</a>
<a href="../files/lib/core/facets/hash/autonew_rb.html">lib/core/facets/hash/autonew.rb</a>
<a href="../files/lib/core/facets/hash/recursively_rb.html">lib/core/facets/hash/recursively.rb</a>
@@ -84,10 +85,11 @@
<a href="../files/lib/core/facets/hash/weave_rb.html">lib/core/facets/hash/weave.rb</a>
<a href="../files/lib/core/facets/hash/swap_rb.html">lib/core/facets/hash/swap.rb</a>
<a href="../files/lib/core/facets/hash/to_struct_rb.html">lib/core/facets/hash/to_struct.rb</a>
<a href="../files/lib/core/facets/hash/symbolize_keys_rb.html">lib/core/facets/hash/symbolize_keys.rb</a>
<a href="../files/lib/core/facets/hash/join_rb.html">lib/core/facets/hash/join.rb</a>
+<a href="../files/lib/core/facets/hash/group_by_value_rb.html">lib/core/facets/hash/group_by_value.rb</a>
<a href="../files/lib/core/facets/hash/replace_each_rb.html">lib/core/facets/hash/replace_each.rb</a>
<a href="../files/lib/core/facets/hash/slice_rb.html">lib/core/facets/hash/slice.rb</a>
<a href="../files/lib/core/facets/hash/op_add_rb.html">lib/core/facets/hash/op_add.rb</a>
<a href="../files/lib/core/facets/hash/rekey_rb.html">lib/core/facets/hash/rekey.rb</a>
<a href="../files/lib/core/facets/hash/update_each_rb.html">lib/core/facets/hash/update_each.rb</a>
@@ -116,76 +118,80 @@
<div class="sectiontitle">Methods</div>
- <span style="padding-right: 5px;"><a href="#M000082">&</a></span>
- <span style="padding-right: 5px;"><a href="#M000097">*</a></span>
- <span style="padding-right: 5px;"><a href="#M000125">+</a></span>
- <span style="padding-right: 5px;"><a href="#M000083">-</a></span>
- <span style="padding-right: 5px;"><a href="#M000098"><<</a></span>
- <span style="padding-right: 5px;"><a href="#M000078">alias!</a></span>
- <span style="padding-right: 5px;"><a href="#M000130">argumentize</a></span>
- <span style="padding-right: 5px;"><a href="#M000079">autonew</a></span>
- <span style="padding-right: 5px;"><a href="#M000109">collate</a></span>
- <span style="padding-right: 5px;"><a href="#M000110">collate!</a></span>
- <span style="padding-right: 5px;"><a href="#M000111">delete_unless</a></span>
- <span style="padding-right: 5px;"><a href="#M000112">delete_values</a></span>
- <span style="padding-right: 5px;"><a href="#M000113">delete_values_at</a></span>
- <span style="padding-right: 5px;"><a href="#M000106">diff</a></span>
- <span style="padding-right: 5px;"><a href="#M000090">each_with_key</a></span>
- <span style="padding-right: 5px;"><a href="#M000084">except</a></span>
- <span style="padding-right: 5px;"><a href="#M000085">except!</a></span>
- <span style="padding-right: 5px;"><a href="#M000108">graph!</a></span>
- <span style="padding-right: 5px;"><a href="#M000086">has_keys?</a></span>
- <span style="padding-right: 5px;"><a href="#M000088">has_only_keys?</a></span>
- <span style="padding-right: 5px;"><a href="#M000104">insert</a></span>
- <span style="padding-right: 5px;"><a href="#M000099">inverse</a></span>
- <span style="padding-right: 5px;"><a href="#M000121">join</a></span>
- <span style="padding-right: 5px;"><a href="#M000087">keys?</a></span>
- <span style="padding-right: 5px;"><a href="#M000107">mash!</a></span>
- <span style="padding-right: 5px;"><a href="#M000089">only_keys?</a></span>
- <span style="padding-right: 5px;"><a href="#M000100">recursive_merge</a></span>
- <span style="padding-right: 5px;"><a href="#M000101">recursive_merge!</a></span>
- <span style="padding-right: 5px;"><a href="#M000080">recursively</a></span>
- <span style="padding-right: 5px;"><a href="#M000081">recursively!</a></span>
- <span style="padding-right: 5px;"><a href="#M000126">rekey</a></span>
- <span style="padding-right: 5px;"><a href="#M000127">rekey!</a></span>
- <span style="padding-right: 5px;"><a href="#M000122">replace_each</a></span>
- <span style="padding-right: 5px;"><a href="#M000091">reverse_merge</a></span>
- <span style="padding-right: 5px;"><a href="#M000092">reverse_merge!</a></span>
- <span style="padding-right: 5px;"><a href="#M000093">reverse_update</a></span>
- <span style="padding-right: 5px;"><a href="#M000105">select!</a></span>
- <span style="padding-right: 5px;"><a href="#M000123">slice</a></span>
- <span style="padding-right: 5px;"><a href="#M000124">slice!</a></span>
- <span style="padding-right: 5px;"><a href="#M000119">stringify_keys</a></span>
- <span style="padding-right: 5px;"><a href="#M000120">stringify_keys!</a></span>
- <span style="padding-right: 5px;"><a href="#M000115">swap!</a></span>
- <span style="padding-right: 5px;"><a href="#M000117">symbolize_keys</a></span>
- <span style="padding-right: 5px;"><a href="#M000118">symbolize_keys!</a></span>
- <span style="padding-right: 5px;"><a href="#M000075">to_h</a></span>
- <span style="padding-right: 5px;"><a href="#M000102">to_proc</a></span>
- <span style="padding-right: 5px;"><a href="#M000103">to_proc_with_reponse</a></span>
- <span style="padding-right: 5px;"><a href="#M000116">to_struct</a></span>
- <span style="padding-right: 5px;"><a href="#M000094">traverse</a></span>
- <span style="padding-right: 5px;"><a href="#M000095">traverse!</a></span>
- <span style="padding-right: 5px;"><a href="#M000128">update_each</a></span>
- <span style="padding-right: 5px;"><a href="#M000129">update_keys</a></span>
- <span style="padding-right: 5px;"><a href="#M000077">update_values</a></span>
- <span style="padding-right: 5px;"><a href="#M000114">weave</a></span>
- <span style="padding-right: 5px;"><a href="#M000076">zipnew</a></span>
- <span style="padding-right: 5px;"><a href="#M000096">|</a></span>
+ <span style="padding-right: 5px;"><a href="#M000114">&</a></span>
+ <span style="padding-right: 5px;"><a href="#M000129">*</a></span>
+ <span style="padding-right: 5px;"><a href="#M000158">+</a></span>
+ <span style="padding-right: 5px;"><a href="#M000115">-</a></span>
+ <span style="padding-right: 5px;"><a href="#M000130"><<</a></span>
+ <span style="padding-right: 5px;"><a href="#M000110">alias!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000163">argumentize</a></span>
+ <span style="padding-right: 5px;"><a href="#M000111">autonew</a></span>
+ <span style="padding-right: 5px;"><a href="#M000141">collate</a></span>
+ <span style="padding-right: 5px;"><a href="#M000142">collate!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000105">dearray_singluar_values</a></span>
+ <span style="padding-right: 5px;"><a href="#M000104">dearray_values</a></span>
+ <span style="padding-right: 5px;"><a href="#M000143">delete_unless</a></span>
+ <span style="padding-right: 5px;"><a href="#M000144">delete_values</a></span>
+ <span style="padding-right: 5px;"><a href="#M000145">delete_values_at</a></span>
+ <span style="padding-right: 5px;"><a href="#M000138">diff</a></span>
+ <span style="padding-right: 5px;"><a href="#M000122">each_with_key</a></span>
+ <span style="padding-right: 5px;"><a href="#M000116">except</a></span>
+ <span style="padding-right: 5px;"><a href="#M000117">except!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000140">graph!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000154">group_by_value</a></span>
+ <span style="padding-right: 5px;"><a href="#M000118">has_keys?</a></span>
+ <span style="padding-right: 5px;"><a href="#M000120">has_only_keys?</a></span>
+ <span style="padding-right: 5px;"><a href="#M000136">insert</a></span>
+ <span style="padding-right: 5px;"><a href="#M000131">inverse</a></span>
+ <span style="padding-right: 5px;"><a href="#M000153">join</a></span>
+ <span style="padding-right: 5px;"><a href="#M000119">keys?</a></span>
+ <span style="padding-right: 5px;"><a href="#M000139">mash!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000107">new_with</a></span>
+ <span style="padding-right: 5px;"><a href="#M000121">only_keys?</a></span>
+ <span style="padding-right: 5px;"><a href="#M000132">recursive_merge</a></span>
+ <span style="padding-right: 5px;"><a href="#M000133">recursive_merge!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000112">recursively</a></span>
+ <span style="padding-right: 5px;"><a href="#M000113">recursively!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000159">rekey</a></span>
+ <span style="padding-right: 5px;"><a href="#M000160">rekey!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000155">replace_each</a></span>
+ <span style="padding-right: 5px;"><a href="#M000123">reverse_merge</a></span>
+ <span style="padding-right: 5px;"><a href="#M000124">reverse_merge!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000125">reverse_update</a></span>
+ <span style="padding-right: 5px;"><a href="#M000137">select!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000156">slice</a></span>
+ <span style="padding-right: 5px;"><a href="#M000157">slice!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000151">stringify_keys</a></span>
+ <span style="padding-right: 5px;"><a href="#M000152">stringify_keys!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000147">swap!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000149">symbolize_keys</a></span>
+ <span style="padding-right: 5px;"><a href="#M000150">symbolize_keys!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000106">to_h</a></span>
+ <span style="padding-right: 5px;"><a href="#M000134">to_proc</a></span>
+ <span style="padding-right: 5px;"><a href="#M000135">to_proc_with_reponse</a></span>
+ <span style="padding-right: 5px;"><a href="#M000148">to_struct</a></span>
+ <span style="padding-right: 5px;"><a href="#M000126">traverse</a></span>
+ <span style="padding-right: 5px;"><a href="#M000127">traverse!</a></span>
+ <span style="padding-right: 5px;"><a href="#M000161">update_each</a></span>
+ <span style="padding-right: 5px;"><a href="#M000162">update_keys</a></span>
+ <span style="padding-right: 5px;"><a href="#M000109">update_values</a></span>
+ <span style="padding-right: 5px;"><a href="#M000146">weave</a></span>
+ <span style="padding-right: 5px;"><a href="#M000108">zipnew</a></span>
+ <span style="padding-right: 5px;"><a href="#M000128">|</a></span>
<div class="sectiontitle">Public Class methods</div>
<div class="method">
<div class="title">
- <a name="M000079"></a><b>autonew</b>(*args)
+ <a name="M000111"></a><b>autonew</b>(*args)
</div>
<div class="description">
<pre>
Hash which auto initializes it's children.
@@ -204,12 +210,12 @@
<p>
CREDIT: Trans, Jan Molic
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000079_source')" id="l_M000079_source">+</a> ]</p>
- <div id="M000079_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000111_source')" id="l_M000111_source">+</a> ]</p>
+ <div id="M000111_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/autonew.rb, line 19</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">autonew</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-comment cmt">#new(*args){|a,k| a[k] = self.class::new(*args)}</span>
<span class="ruby-identifier">leet</span> = <span class="ruby-identifier">lambda</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">hsh</span>, <span class="ruby-identifier">key</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hsh</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">new</span>( <span class="ruby-operator">&</span><span class="ruby-identifier">leet</span> ) }
@@ -219,14 +225,41 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000076"></a><b>zipnew</b>(keys,values)
+ <a name="M000107"></a><b>new_with</b>( {|| ...}
</div>
<div class="description">
<p>
+Instantiate a new hash with a default value determined by the block.
+</p>
+<p>
+<a href="Hash.html#M000107">Hash.new_with</a> { [] }
+</p>
+<p>
+CREDIT: Pit Capitan
+</p>
+ </div>
+<div class="sourcecode">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000107_source')" id="l_M000107_source">+</a> ]</p>
+ <div id="M000107_source" class="dyn-source">
+<pre>
+<span class="ruby-comment cmt"># File lib/core/facets/hash/new_with.rb, line 10</span>
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new_with</span> <span class="ruby-comment cmt">#:yield:</span>
+ <span class="ruby-identifier">new</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">h</span>, <span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-keyword kw">yield</span> }
+ <span class="ruby-keyword kw">end</span>
+</pre>
+ </div>
+</div>
+</div>
+<div class="method">
+ <div class="title">
+ <a name="M000108"></a><b>zipnew</b>(keys,values)
+ </div>
+ <div class="description">
+ <p>
Creates a new hash from two arrays —a keys array and a values array.
</p>
<pre>
Hash.zipnew(["a","b","c"], [1,2,3])
#=> { "a"=>1, "b"=>2, "c"=>3 }
@@ -234,12 +267,12 @@
<p>
CREDIT: Trans, Ara T. Howard
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000076_source')" id="l_M000076_source">+</a> ]</p>
- <div id="M000076_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000108_source')" id="l_M000108_source">+</a> ]</p>
+ <div id="M000108_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/zipnew.rb, line 11</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">zipnew</span>(<span class="ruby-identifier">keys</span>,<span class="ruby-identifier">values</span>) <span class="ruby-comment cmt"># or some better name</span>
<span class="ruby-identifier">h</span> = {}
<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">size</span>.<span class="ruby-identifier">times</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">h</span>[ <span class="ruby-identifier">keys</span>[<span class="ruby-identifier">i</span>] ] = <span class="ruby-identifier">values</span>[<span class="ruby-identifier">i</span>] }
@@ -250,11 +283,11 @@
</div>
</div>
<div class="sectiontitle">Public Instance methods</div>
<div class="method">
<div class="title">
- <a name="M000082"></a><b>&</b>(other)
+ <a name="M000114"></a><b>&</b>(other)
</div>
<div class="description">
<p>
<a href="Hash.html">Hash</a> intersection. Two hashes intersect when their
pairs are equal.
@@ -275,12 +308,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000082_source')" id="l_M000082_source">+</a> ]</p>
- <div id="M000082_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000114_source')" id="l_M000114_source">+</a> ]</p>
+ <div id="M000114_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/op_and.rb, line 19</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-operator">&</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">other</span>
<span class="ruby-keyword kw">when</span> <span class="ruby-constant">Array</span>
@@ -297,11 +330,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000097"></a><b>*</b>(other)
+ <a name="M000129"></a><b>*</b>(other)
</div>
<div class="description">
<p>
Like merge operator ’+’ but merges in reverse order.
</p>
@@ -315,12 +348,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000097_source')" id="l_M000097_source">+</a> ]</p>
- <div id="M000097_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000129_source')" id="l_M000129_source">+</a> ]</p>
+ <div id="M000129_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/op_mul.rb, line 13</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-operator">*</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-identifier">other</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-keyword kw">self</span>)
<span class="ruby-keyword kw">end</span>
@@ -328,23 +361,23 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000125"></a><b>+</b>(other)
+ <a name="M000158"></a><b>+</b>(other)
</div>
<div class="description">
<p>
Operator for merge.
</p>
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000125_source')" id="l_M000125_source">+</a> ]</p>
- <div id="M000125_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000158_source')" id="l_M000158_source">+</a> ]</p>
+ <div id="M000158_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/op_add.rb, line 7</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-operator">+</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-keyword kw">end</span>
@@ -352,11 +385,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000083"></a><b>-</b>(other)
+ <a name="M000115"></a><b>-</b>(other)
</div>
<div class="description">
<p>
Operator for remove hash paris. If another hash is given the pairs are only
removed if both key and value are equal. If an array is given then matching
@@ -365,12 +398,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000083_source')" id="l_M000083_source">+</a> ]</p>
- <div id="M000083_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000115_source')" id="l_M000115_source">+</a> ]</p>
+ <div id="M000115_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/op_sub.rb, line 9</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-operator">-</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-identifier">h</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_ary</span>)
@@ -390,23 +423,23 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000098"></a><b><<</b>(other)
+ <a name="M000130"></a><b><<</b>(other)
</div>
<div class="description">
<p>
Can be used like update, or passed as two-element [key,value] array.
</p>
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000098_source')" id="l_M000098_source">+</a> ]</p>
- <div id="M000098_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000130_source')" id="l_M000130_source">+</a> ]</p>
+ <div id="M000130_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/op_push.rb, line 8</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-operator"><<</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_ary</span>)
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">store</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">other</span>)
@@ -419,11 +452,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000078"></a><b>alias!</b>(newkey, oldkey)
+ <a name="M000110"></a><b>alias!</b>(newkey, oldkey)
</div>
<div class="description">
<p>
Modifies the receiving <a href="Hash.html">Hash</a> so that the value
previously referred to by <em>oldkey</em> is also referenced by
@@ -454,12 +487,12 @@
<p>
TODO: Rename to aliaskey or something else.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000078_source')" id="l_M000078_source">+</a> ]</p>
- <div id="M000078_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000110_source')" id="l_M000110_source">+</a> ]</p>
+ <div id="M000110_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/alias.rb, line 25</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alias!</span>(<span class="ruby-identifier">newkey</span>, <span class="ruby-identifier">oldkey</span>)
<span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">newkey</span>] = <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">oldkey</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">oldkey</span>)
<span class="ruby-keyword kw">self</span>
@@ -468,11 +501,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000130"></a><b>argumentize</b>(args_field=nil)
+ <a name="M000163"></a><b>argumentize</b>(args_field=nil)
</div>
<div class="description">
<p>
Turn a hash into arguments.
</p>
@@ -482,12 +515,12 @@
h.argumentize(:list) #=> [ [1,2], { :base => "HI" } ]
h.argumentize(:base) #=> [ ["HI"], { :list => [1,2] } ]
</pre>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000130_source')" id="l_M000130_source">+</a> ]</p>
- <div id="M000130_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000163_source')" id="l_M000163_source">+</a> ]</p>
+ <div id="M000163_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/argumentize.rb, line 10</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">argumentize</span>(<span class="ruby-identifier">args_field</span>=<span class="ruby-keyword kw">nil</span>)
<span class="ruby-identifier">config</span> = <span class="ruby-identifier">dup</span>
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args_field</span>
@@ -502,11 +535,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000109"></a><b>collate</b>(other_hash)
+ <a name="M000141"></a><b>collate</b>(other_hash)
</div>
<div class="description">
<p>
Merge the values of this hash with those from another, setting all values
to be arrays representing the values from both hashes.
@@ -514,85 +547,163 @@
<pre>
{ :a=>1, :b=>2 }.collate :a=>3, :b=>4, :c=>5
#=> { :a=>[1,3], :b=>[2,4], :c=>[5] }
</pre>
<p>
-CREDIT: Gavin Kistner (Phrogz)
+CREDIT: Tilo Sloboda CREDIT: Gavin Kistner (Phrogz)
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000109_source')" id="l_M000109_source">+</a> ]</p>
- <div id="M000109_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000141_source')" id="l_M000141_source">+</a> ]</p>
+ <div id="M000141_source" class="dyn-source">
<pre>
-<span class="ruby-comment cmt"># File lib/core/facets/hash/collate.rb, line 11</span>
+<span class="ruby-comment cmt"># File lib/core/facets/hash/collate.rb, line 12</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collate</span>(<span class="ruby-identifier">other_hash</span>)
- <span class="ruby-identifier">dup</span>.<span class="ruby-identifier">collate!</span>(<span class="ruby-identifier">other_hash</span>)
+ <span class="ruby-identifier">h</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
+ <span class="ruby-comment cmt"># Prepare, ensuring every existing key is already an Array</span>
+ <span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span>
+ <span class="ruby-keyword kw">else</span>
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">key</span>] = [<span class="ruby-identifier">value</span>]
+ <span class="ruby-keyword kw">end</span>
+ <span class="ruby-keyword kw">end</span>
+ <span class="ruby-comment cmt"># Collate with values from other_hash</span>
+ <span class="ruby-identifier">other_hash</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">h</span>[<span class="ruby-identifier">key</span>]
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">key</span>].<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">value</span>)
+ <span class="ruby-keyword kw">else</span>
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">key</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">value</span>
+ <span class="ruby-keyword kw">end</span>
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span>
+ <span class="ruby-keyword kw">else</span>
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">key</span>] = [<span class="ruby-identifier">value</span>]
+ <span class="ruby-keyword kw">end</span>
+ <span class="ruby-keyword kw">end</span>
+ <span class="ruby-comment cmt">#each{ |key, value| value.uniq! } if options[ :uniq ]</span>
+ <span class="ruby-identifier">h</span>
<span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000110"></a><b>collate!</b>(other_hash)
+ <a name="M000142"></a><b>collate!</b>(other_hash)
</div>
<div class="description">
<p>
-The same as <a href="Hash.html#M000109">collate</a>, but modifies the
+The same as <a href="Hash.html#M000141">collate</a>, but modifies the
receiver in place.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000110_source')" id="l_M000110_source">+</a> ]</p>
- <div id="M000110_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000142_source')" id="l_M000142_source">+</a> ]</p>
+ <div id="M000142_source" class="dyn-source">
<pre>
-<span class="ruby-comment cmt"># File lib/core/facets/hash/collate.rb, line 17</span>
+<span class="ruby-comment cmt"># File lib/core/facets/hash/collate.rb, line 42</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collate!</span>(<span class="ruby-identifier">other_hash</span>)
- <span class="ruby-comment cmt"># Prepare, ensuring every existing key is already an Array</span>
- <span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
- <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span>
+ <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">collate</span>(<span class="ruby-identifier">other_hash</span>)
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-identifier">result</span>)
+ <span class="ruby-keyword kw">end</span>
+</pre>
+ </div>
+</div>
+</div>
+<div class="method">
+ <div class="title">
+ <a name="M000105"></a><b>dearray_singluar_values</b>()
+ </div>
+ <div class="description">
+ <p>
+Any array values with less one or no elements will have the element or nil
+set as the value instead.
+</p>
+<pre>
+ h = { :a=>[1], :b=>[1,2], :c=>3, :d=>[] }
+ h.dearray_singluar_values #=> { :a=>1, :b=>[1,2], :c=>3, :d=>nil }
+</pre>
+<p>
+CREDIT: Trans
+</p>
+ </div>
+<div class="sourcecode">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000105_source')" id="l_M000105_source">+</a> ]</p>
+ <div id="M000105_source" class="dyn-source">
+<pre>
+<span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 34</span>
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dearray_singluar_values</span>
+ <span class="ruby-identifier">h</span> = {}
+ <span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">v</span>
+ <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Array</span>
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = (<span class="ruby-identifier">v</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator"><</span> <span class="ruby-value">2</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">v</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">:</span> <span class="ruby-identifier">v</span>
<span class="ruby-keyword kw">else</span>
- <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key</span>] = [<span class="ruby-identifier">value</span>]
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">end</span>
- <span class="ruby-comment cmt"># Collate with values from other_hash</span>
- <span class="ruby-identifier">other_hash</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
- <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key</span>]
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
- <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key</span>].<span class="ruby-identifier">concat</span>( <span class="ruby-identifier">value</span> )
- <span class="ruby-keyword kw">else</span>
- <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">value</span>
- <span class="ruby-keyword kw">end</span>
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
- <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span>
+ <span class="ruby-identifier">h</span>
+ <span class="ruby-keyword kw">end</span>
+</pre>
+ </div>
+</div>
+</div>
+<div class="method">
+ <div class="title">
+ <a name="M000104"></a><b>dearray_values</b>(index=0)
+ </div>
+ <div class="description">
+ <p>
+Any array values with less one or no elements will have the element or nil
+set as the value instead.
+</p>
+<pre>
+ h = { :a=>[1], :b=>[1,2], :c=>3, :d=>[] }
+ h.dearray_values #=> { :a=>1, :b=>1, :c=>3, :d=>nil }
+</pre>
+<p>
+CREDIT: Trans
+</p>
+ </div>
+<div class="sourcecode">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000104_source')" id="l_M000104_source">+</a> ]</p>
+ <div id="M000104_source" class="dyn-source">
+<pre>
+<span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 13</span>
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dearray_values</span>(<span class="ruby-identifier">index</span>=<span class="ruby-value">0</span>)
+ <span class="ruby-identifier">h</span> = {}
+ <span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">v</span>
+ <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Array</span>
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>[<span class="ruby-identifier">index</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">v</span>[<span class="ruby-value">-1</span>]
<span class="ruby-keyword kw">else</span>
- <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key</span>] = [<span class="ruby-identifier">value</span>]
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">end</span>
- <span class="ruby-comment cmt">#each{ |key, value| value.uniq! } if options[ :uniq ]</span>
- <span class="ruby-keyword kw">self</span>
+ <span class="ruby-identifier">h</span>
<span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000111"></a><b>delete_unless</b>( {|| ...}
+ <a name="M000143"></a><b>delete_unless</b>( {|| ...}
</div>
<div class="description">
<p>
Inverse of delete_if.
</p>
<p>
CREDIT: Daniel Schierbeck
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000111_source')" id="l_M000111_source">+</a> ]</p>
- <div id="M000111_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000143_source')" id="l_M000143_source">+</a> ]</p>
+ <div id="M000143_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/delete.rb, line 11</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_unless</span> <span class="ruby-comment cmt">#:yield:</span>
<span class="ruby-identifier">delete_if</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span> <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>) }
<span class="ruby-keyword kw">end</span>
@@ -600,11 +711,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000112"></a><b>delete_values</b>(*values)
+ <a name="M000144"></a><b>delete_values</b>(*values)
</div>
<div class="description">
<p>
Minor modification to Ruby‘s Hash#delete method allowing it to take
multiple keys.
@@ -617,12 +728,12 @@
<p>
CREDIT: Daniel Schierbeck
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000112_source')" id="l_M000112_source">+</a> ]</p>
- <div id="M000112_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000144_source')" id="l_M000144_source">+</a> ]</p>
+ <div id="M000144_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/delete.rb, line 24</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_values</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">values</span>)
<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">map</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">key</span><span class="ruby-operator">|</span> <span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">values</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">key</span>)) }
<span class="ruby-keyword kw">end</span>
@@ -630,11 +741,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000113"></a><b>delete_values_at</b>(*keys, &yld)
+ <a name="M000145"></a><b>delete_values_at</b>(*keys, &yld)
</div>
<div class="description">
<p>
Minor modification to Ruby‘s Hash#delete method allowing it to take
multiple keys.
@@ -653,12 +764,12 @@
<p>
CREDIT: Daniel Schierbeck
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000113_source')" id="l_M000113_source">+</a> ]</p>
- <div id="M000113_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000145_source')" id="l_M000145_source">+</a> ]</p>
+ <div id="M000145_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/delete.rb, line 42</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_values_at</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">keys</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">yld</span>)
<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">key</span><span class="ruby-operator">|</span> <span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">yld</span>) }
<span class="ruby-keyword kw">end</span>
@@ -666,20 +777,20 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000106"></a><b>diff</b>(hash)
+ <a name="M000138"></a><b>diff</b>(hash)
</div>
<div class="description">
<p>
Difference comparison of two hashes.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000106_source')" id="l_M000106_source">+</a> ]</p>
- <div id="M000106_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000138_source')" id="l_M000138_source">+</a> ]</p>
+ <div id="M000138_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/diff.rb, line 5</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">diff</span>(<span class="ruby-identifier">hash</span>)
<span class="ruby-identifier">h1</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">dup</span>.<span class="ruby-identifier">delete_if</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">v</span> }
<span class="ruby-identifier">h2</span> = <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">dup</span>.<span class="ruby-identifier">delete_if</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">k</span>) }
@@ -689,11 +800,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000090"></a><b>each_with_key</b>( &yld )
+ <a name="M000122"></a><b>each_with_key</b>( &yld )
</div>
<div class="description">
<p>
Each with key is like each_pair but reverses the order the parameters to
[value,key] instead of [key,value].
@@ -701,12 +812,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000090_source')" id="l_M000090_source">+</a> ]</p>
- <div id="M000090_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000122_source')" id="l_M000122_source">+</a> ]</p>
+ <div id="M000122_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/keys.rb, line 40</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each_with_key</span>( <span class="ruby-operator">&</span><span class="ruby-identifier">yld</span> )
<span class="ruby-identifier">each_pair</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">yld</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">v</span>,<span class="ruby-identifier">k</span>) }
<span class="ruby-keyword kw">end</span>
@@ -714,20 +825,20 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000084"></a><b>except</b>(*less_keys)
+ <a name="M000116"></a><b>except</b>(*less_keys)
</div>
<div class="description">
<p>
Returns a new hash less the given keys.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000084_source')" id="l_M000084_source">+</a> ]</p>
- <div id="M000084_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000116_source')" id="l_M000116_source">+</a> ]</p>
+ <div id="M000116_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/except.rb, line 5</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">except</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">less_keys</span>)
<span class="ruby-identifier">slice</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">keys</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">less_keys</span>)
<span class="ruby-keyword kw">end</span>
@@ -735,11 +846,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000085"></a><b>except!</b>(*less_keys)
+ <a name="M000117"></a><b>except!</b>(*less_keys)
</div>
<div class="description">
<p>
Replaces hash with new hash less the given keys. This returns the hash of
keys removed.
@@ -749,12 +860,12 @@
h.except!(:a) #=> {:a=>1}
h #=> {:b=>2,:c=>3}
</pre>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000085_source')" id="l_M000085_source">+</a> ]</p>
- <div id="M000085_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000117_source')" id="l_M000117_source">+</a> ]</p>
+ <div id="M000117_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/except.rb, line 18</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">except!</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">less_keys</span>)
<span class="ruby-identifier">removed</span> = <span class="ruby-identifier">slice</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">less_keys</span>)
<span class="ruby-identifier">replace</span>(<span class="ruby-identifier">except</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">less_keys</span>))
@@ -764,24 +875,97 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000108"></a><b>graph!</b>(&yld)
+ <a name="M000140"></a><b>graph!</b>(&yld)
</div>
<div class="description">
<p>
Alias for mash!
</p>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000086"></a><b>has_keys?</b>(*check_keys)
+ <a name="M000154"></a><b>group_by_value</b>()
</div>
<div class="description">
<p>
+Like group_by, but allows hash values to be grouped with weeding out the
+keys.
+</p>
+<pre>
+ Example:
+
+ birthdays = {...} # Maps each person to his/her birthday.
+</pre>
+<p>
+Now I want to have the list of people that have their birthday on a
+specific date. This can be done by creating a hash first, using group_by:
+</p>
+<pre>
+ birthdays.group_by{|person, birthday| birthday}
+</pre>
+<p>
+This returns:
+</p>
+<p>
+{date=>[[person1, date], [person2, date], [person3, date]]}
+</p>
+<p>
+… which is a bit inconvient. Too many dates. I would rather like to
+have:
+</p>
+<pre>
+ {date=>[person1, person2, person3]]}
+</pre>
+<p>
+This can be achieved by:
+</p>
+<pre>
+ birthdays.inject!({}){|h, (person, date)| (h[date] ||= []) << person}
+</pre>
+<p>
+I‘ve used this pattern just once too often, so I moved the code to <a
+href="Hash.html">Hash</a> (and <a href="Enumerable.html">Enumerable</a>,
+for associative arrays). Here‘s the cleaner code:
+</p>
+<p>
+birthdays.group_by_value
+</p>
+<pre>
+ h = {"A"=>1, "B"=>1, "C"=>1, "D"=>2, "E"=>2, "F"=>2, "G"=>3, "H"=>3, "I"=>3}
+
+ h.group_by{|k, v| v} # ==> {1=>[["A", 1], ["B", 1], ["C", 1]], 2=>[["D", 2], ["E", 2], ["F", 2]], 3=>[["G", 3], ["H", 3], ["I", 3]]}
+ h.group_by_value # ==> {1=>["A", "B", "C"], 2=>["D", "E", "F"], 3=>["G", "H", "I"]}
+ h.sort.group_by_value # ==> [[1, ["A", "B", "C"]], [2, ["D", "E", "F"]], [3, ["G", "H", "I"]]]
+</pre>
+<p>
+CREDIT: Erik Veenstra
+</p>
+ </div>
+<div class="sourcecode">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000154_source')" id="l_M000154_source">+</a> ]</p>
+ <div id="M000154_source" class="dyn-source">
+<pre>
+<span class="ruby-comment cmt"># File lib/core/facets/hash/group_by_value.rb, line 42</span>
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">group_by_value</span>
+ <span class="ruby-identifier">res</span> = {}
+ <span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span> (<span class="ruby-identifier">res</span>[<span class="ruby-identifier">v</span>] <span class="ruby-operator">||=</span> []) <span class="ruby-operator"><<</span> <span class="ruby-identifier">k</span>}
+ <span class="ruby-identifier">res</span>
+ <span class="ruby-keyword kw">end</span>
+</pre>
+ </div>
+</div>
+</div>
+<div class="method">
+ <div class="title">
+ <a name="M000118"></a><b>has_keys?</b>(*check_keys)
+ </div>
+ <div class="description">
+ <p>
Returns true or false whether the hash contains the given keys.
</p>
<pre>
h = { :a => 1, :b => 2 }
h.has_keys?( :a ) #=> true
@@ -791,15 +975,15 @@
CREDIT: Trans
</p>
</div>
<div class="aka">
This method is also aliased as
- <a href="Hash.html#M000087">keys?</a>
+ <a href="Hash.html#M000119">keys?</a>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000086_source')" id="l_M000086_source">+</a> ]</p>
- <div id="M000086_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000118_source')" id="l_M000118_source">+</a> ]</p>
+ <div id="M000118_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/keys.rb, line 12</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_keys?</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">check_keys</span>)
<span class="ruby-identifier">unknown_keys</span> = <span class="ruby-identifier">check_keys</span> <span class="ruby-operator">-</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">keys</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">unknown_keys</span>.<span class="ruby-identifier">empty?</span>
@@ -808,11 +992,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000088"></a><b>has_only_keys?</b>(*check_keys)
+ <a name="M000120"></a><b>has_only_keys?</b>(*check_keys)
</div>
<div class="description">
<p>
Returns true if the hash contains <em>only</em> the given keys, otherwise
false.
@@ -826,15 +1010,15 @@
CREDIT: Trans
</p>
</div>
<div class="aka">
This method is also aliased as
- <a href="Hash.html#M000089">only_keys?</a>
+ <a href="Hash.html#M000121">only_keys?</a>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000088_source')" id="l_M000088_source">+</a> ]</p>
- <div id="M000088_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000120_source')" id="l_M000120_source">+</a> ]</p>
+ <div id="M000120_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/keys.rb, line 28</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_only_keys?</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">check_keys</span>)
<span class="ruby-identifier">unknown_keys</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">keys</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">check_keys</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">unknown_keys</span>.<span class="ruby-identifier">empty?</span>
@@ -843,11 +1027,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000104"></a><b>insert</b>(name, value)
+ <a name="M000136"></a><b>insert</b>(name, value)
</div>
<div class="description">
<p>
As with store but only if the key isn‘t already in the hash.
</p>
@@ -857,12 +1041,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000104_source')" id="l_M000104_source">+</a> ]</p>
- <div id="M000104_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000136_source')" id="l_M000136_source">+</a> ]</p>
+ <div id="M000136_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/insert.rb, line 10</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">insert</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">key?</span>(<span class="ruby-identifier">name</span>)
<span class="ruby-keyword kw">false</span>
@@ -875,15 +1059,15 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000099"></a><b>inverse</b>()
+ <a name="M000131"></a><b>inverse</b>()
</div>
<div class="description">
<p>
-Create a "true" <a href="Hash.html#M000099">inverse</a> hash by
+Create a "true" <a href="Hash.html#M000131">inverse</a> hash by
storing mutliple values in Arrays.
</p>
<pre>
h = {"a"=>3, "b"=>3, "c"=>3, "d"=>2, "e"=>9, "f"=>3, "g"=>9}
@@ -895,12 +1079,12 @@
<p>
CREDIT: Tilo Sloboda
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000099_source')" id="l_M000099_source">+</a> ]</p>
- <div id="M000099_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000131_source')" id="l_M000131_source">+</a> ]</p>
+ <div id="M000131_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/inverse.rb, line 14</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inverse</span>
<span class="ruby-identifier">i</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">each_pair</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
@@ -916,23 +1100,23 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000121"></a><b>join</b>(pair_divider='', elem_divider='')
+ <a name="M000153"></a><b>join</b>(pair_divider='', elem_divider='')
</div>
<div class="description">
<p>
Like Array#join but specialized to <a href="Hash.html">Hash</a>.
</p>
<p>
CREDIT: Mauricio Fernandez
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000121_source')" id="l_M000121_source">+</a> ]</p>
- <div id="M000121_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000153_source')" id="l_M000153_source">+</a> ]</p>
+ <div id="M000153_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/join.rb, line 7</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">join</span>(<span class="ruby-identifier">pair_divider</span>=<span class="ruby-value str">''</span>, <span class="ruby-identifier">elem_divider</span>=<span class="ruby-value str">''</span>)
<span class="ruby-identifier">s</span> = []
<span class="ruby-identifier">each_pair</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"#{k}#{pair_divider}#{v}"</span> }
@@ -942,21 +1126,21 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000087"></a><b>keys?</b>(*check_keys)
+ <a name="M000119"></a><b>keys?</b>(*check_keys)
</div>
<div class="description">
<p>
Alias for has_keys?
</p>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000107"></a><b>mash!</b>(&yld)
+ <a name="M000139"></a><b>mash!</b>(&yld)
</div>
<div class="description">
<p>
In place version of mash.
</p>
@@ -965,15 +1149,15 @@
applicable to Enumerable.
</pre>
</div>
<div class="aka">
This method is also aliased as
- <a href="Hash.html#M000108">graph!</a>
+ <a href="Hash.html#M000140">graph!</a>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000107_source')" id="l_M000107_source">+</a> ]</p>
- <div id="M000107_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000139_source')" id="l_M000139_source">+</a> ]</p>
+ <div id="M000139_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/mash.rb, line 10</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mash!</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">yld</span>)
<span class="ruby-identifier">replace</span>(<span class="ruby-identifier">mash</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">yld</span>))
<span class="ruby-keyword kw">end</span>
@@ -981,31 +1165,31 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000089"></a><b>only_keys?</b>(*check_keys)
+ <a name="M000121"></a><b>only_keys?</b>(*check_keys)
</div>
<div class="description">
<p>
Alias for has_only_keys?
</p>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000100"></a><b>recursive_merge</b>(other)
+ <a name="M000132"></a><b>recursive_merge</b>(other)
</div>
<div class="description">
<p>
-Same as Hash#merge but <a href="Hash.html#M000080">recursively</a> merges
+Same as Hash#merge but <a href="Hash.html#M000112">recursively</a> merges
sub-hashes.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000100_source')" id="l_M000100_source">+</a> ]</p>
- <div id="M000100_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000132_source')" id="l_M000132_source">+</a> ]</p>
+ <div id="M000132_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/recursive_merge.rb, line 5</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recursive_merge</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-identifier">hash</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-identifier">other</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
@@ -1022,21 +1206,21 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000101"></a><b>recursive_merge!</b>(other)
+ <a name="M000133"></a><b>recursive_merge!</b>(other)
</div>
<div class="description">
<p>
-Same as Hash#merge! but <a href="Hash.html#M000080">recursively</a> merges
+Same as Hash#merge! but <a href="Hash.html#M000112">recursively</a> merges
sub-hashes.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000101_source')" id="l_M000101_source">+</a> ]</p>
- <div id="M000101_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000133_source')" id="l_M000133_source">+</a> ]</p>
+ <div id="M000133_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/recursive_merge.rb, line 20</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recursive_merge!</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-identifier">other</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">myval</span> = <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key</span>]
@@ -1052,26 +1236,26 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000080"></a><b>recursively</b>() {|h| ...}
+ <a name="M000112"></a><b>recursively</b>() {|h| ...}
</div>
<div class="description">
<p>
-Apply a block to hash, and <a href="Hash.html#M000080">recursively</a>
+Apply a block to hash, and <a href="Hash.html#M000112">recursively</a>
apply that block to each subhash.
</p>
<pre>
h = {:a=>1, :b=>{:b1=>1, :b2=>2}}
h.recursively{|h| h.rekey(&:to_s) }
=> {"a"=>1, "b"=>{"b1"=>1, "b2"=>2}}
</pre>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000080_source')" id="l_M000080_source">+</a> ]</p>
- <div id="M000080_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000112_source')" id="l_M000112_source">+</a> ]</p>
+ <div id="M000112_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/recursively.rb, line 10</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recursively</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">h</span> = <span class="ruby-identifier">inject</span>({}) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash</span>, (<span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>)<span class="ruby-operator">|</span>
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
@@ -1087,15 +1271,15 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000081"></a><b>recursively!</b>(&block)
+ <a name="M000113"></a><b>recursively!</b>(&block)
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000081_source')" id="l_M000081_source">+</a> ]</p>
- <div id="M000081_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000113_source')" id="l_M000113_source">+</a> ]</p>
+ <div id="M000113_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/recursively.rb, line 24</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recursively!</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">replace</span>(<span class="ruby-identifier">recursively</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>))
<span class="ruby-keyword kw">end</span>
@@ -1103,11 +1287,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000126"></a><b>rekey</b>(*args, &block)
+ <a name="M000159"></a><b>rekey</b>(*args, &block)
</div>
<div class="description">
<p>
Rekey a hash.
</p>
@@ -1142,12 +1326,12 @@
<p>
CREDIT: Trans, Gavin Kistner
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000126_source')" id="l_M000126_source">+</a> ]</p>
- <div id="M000126_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000159_source')" id="l_M000159_source">+</a> ]</p>
+ <div id="M000159_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/rekey.rb, line 32</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rekey</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">dup</span>.<span class="ruby-identifier">rekey!</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword kw">end</span>
@@ -1155,15 +1339,15 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000127"></a><b>rekey!</b>(*args, &block)
+ <a name="M000160"></a><b>rekey!</b>(*args, &block)
</div>
<div class="description">
<p>
-Synonym for <a href="Hash.html#M000126">Hash#rekey</a>, but modifies the
+Synonym for <a href="Hash.html#M000159">Hash#rekey</a>, but modifies the
receiver in place (and returns it).
</p>
<pre>
foo = { :name=>'Gavin', :wife=>:Lisa }
foo.rekey!{ |k| k.to_s } #=> { "name"=>"Gavin", "wife"=>:Lisa }
@@ -1172,12 +1356,12 @@
<p>
CREDIT: Trans, Gavin Kistner
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000127_source')" id="l_M000127_source">+</a> ]</p>
- <div id="M000127_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000160_source')" id="l_M000160_source">+</a> ]</p>
+ <div id="M000160_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/rekey.rb, line 44</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rekey!</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
<span class="ruby-comment cmt"># for backward comptability (TODO: DEPRECATE).</span>
<span class="ruby-identifier">block</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">pop</span>.<span class="ruby-identifier">to_sym</span>.<span class="ruby-identifier">to_proc</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
@@ -1199,24 +1383,24 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000122"></a><b>replace_each</b>( {|| ...}
+ <a name="M000155"></a><b>replace_each</b>( {|| ...}
</div>
<div class="description">
<p>
-Same as <a href="Hash.html#M000128">update_each</a>, but deletes the key
+Same as <a href="Hash.html#M000161">update_each</a>, but deletes the key
element first.
</p>
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000122_source')" id="l_M000122_source">+</a> ]</p>
- <div id="M000122_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000155_source')" id="l_M000155_source">+</a> ]</p>
+ <div id="M000155_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/replace_each.rb, line 7</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">replace_each</span> <span class="ruby-comment cmt"># :yield:</span>
<span class="ruby-identifier">dup</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">k</span>)
@@ -1228,11 +1412,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000091"></a><b>reverse_merge</b>(other)
+ <a name="M000123"></a><b>reverse_merge</b>(other)
</div>
<div class="description">
<p>
Allows for reverse merging where its the keys in the calling hash that wins
over those in the <tt>other_hash</tt>. This is particularly useful for
@@ -1247,12 +1431,12 @@
The default :size and :velocity is only set if the <tt>options</tt> passed
in doesn‘t already have those keys set.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000091_source')" id="l_M000091_source">+</a> ]</p>
- <div id="M000091_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000123_source')" id="l_M000123_source">+</a> ]</p>
+ <div id="M000123_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/merge.rb, line 15</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reverse_merge</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-identifier">other</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-keyword kw">self</span>)
<span class="ruby-keyword kw">end</span>
@@ -1260,24 +1444,24 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000092"></a><b>reverse_merge!</b>(other)
+ <a name="M000124"></a><b>reverse_merge!</b>(other)
</div>
<div class="description">
<p>
-Inplace form of <a href="Hash.html#M000091">reverse_merge</a>.
+Inplace form of <a href="Hash.html#M000123">reverse_merge</a>.
</p>
</div>
<div class="aka">
This method is also aliased as
- <a href="Hash.html#M000093">reverse_update</a>
+ <a href="Hash.html#M000125">reverse_update</a>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000092_source')" id="l_M000092_source">+</a> ]</p>
- <div id="M000092_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000124_source')" id="l_M000124_source">+</a> ]</p>
+ <div id="M000124_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/merge.rb, line 21</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reverse_merge!</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-identifier">replace</span>(<span class="ruby-identifier">reverse_merge</span>(<span class="ruby-identifier">other</span>))
<span class="ruby-keyword kw">end</span>
@@ -1285,33 +1469,33 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000093"></a><b>reverse_update</b>(other)
+ <a name="M000125"></a><b>reverse_update</b>(other)
</div>
<div class="description">
<p>
-Alias for <a href="Hash.html#M000091">reverse_merge</a>!
+Alias for <a href="Hash.html#M000123">reverse_merge</a>!
</p>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000105"></a><b>select!</b>() {|k,v| ...}
+ <a name="M000137"></a><b>select!</b>() {|k,v| ...}
</div>
<div class="description">
<p>
In-place version of Hash#select. The opposite of the built-in Hash#reject!.
</p>
<p>
CREDIT: Gavin Sinclair, Noah Gibbs
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000105_source')" id="l_M000105_source">+</a> ]</p>
- <div id="M000105_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000137_source')" id="l_M000137_source">+</a> ]</p>
+ <div id="M000137_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/select.rb, line 8</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">select!</span>
<span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">not</span> <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span>) }
<span class="ruby-keyword kw">end</span>
@@ -1319,20 +1503,20 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000123"></a><b>slice</b>(*keep_keys)
+ <a name="M000156"></a><b>slice</b>(*keep_keys)
</div>
<div class="description">
<p>
Returns a new hash with only the given keys.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000123_source')" id="l_M000123_source">+</a> ]</p>
- <div id="M000123_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000156_source')" id="l_M000156_source">+</a> ]</p>
+ <div id="M000156_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/slice.rb, line 9</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slice</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">keep_keys</span>)
<span class="ruby-identifier">h</span> = {}
<span class="ruby-identifier">keep_keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span><span class="ruby-operator">|</span>
@@ -1344,11 +1528,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000124"></a><b>slice!</b>(*keep_keys)
+ <a name="M000157"></a><b>slice!</b>(*keep_keys)
</div>
<div class="description">
<p>
Replaces hash with a new hash having only the given keys. This return the
hash of keys removed.
@@ -1358,12 +1542,12 @@
h.slice!(:a) #=> {:a=>1}
h #=> {:b=>2}
</pre>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000124_source')" id="l_M000124_source">+</a> ]</p>
- <div id="M000124_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000157_source')" id="l_M000157_source">+</a> ]</p>
+ <div id="M000157_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/slice.rb, line 24</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slice!</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">keep_keys</span>)
<span class="ruby-identifier">removed</span> = <span class="ruby-identifier">except</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">keep_keys</span>)
<span class="ruby-identifier">replace</span>(<span class="ruby-identifier">slice</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">keep_keys</span>))
@@ -1373,11 +1557,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000119"></a><b>stringify_keys</b>(&filter)
+ <a name="M000151"></a><b>stringify_keys</b>(&filter)
</div>
<div class="description">
<p>
Converts all keys in the <a href="Hash.html">Hash</a> to Strings, returning
a new <a href="Hash.html">Hash</a>. With a <tt>filter</tt> parameter,
@@ -1388,16 +1572,16 @@
foo.stringify_keys #=> { "name"=>"Gavin", "wife"=>:Lisa }
foo.inspect #=> { :name =>"Gavin", :wife=>:Lisa }
</pre>
<p>
This method is considered archaic. Use <a
-href="Hash.html#M000126">rekey</a> instead.
+href="Hash.html#M000159">rekey</a> instead.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000119_source')" id="l_M000119_source">+</a> ]</p>
- <div id="M000119_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000151_source')" id="l_M000151_source">+</a> ]</p>
+ <div id="M000151_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/symbolize_keys.rb, line 54</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stringify_keys</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">filter</span>)
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filter</span>
<span class="ruby-identifier">rekey</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">filter</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span> }
@@ -1409,31 +1593,31 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000120"></a><b>stringify_keys!</b>(&filter)
+ <a name="M000152"></a><b>stringify_keys!</b>(&filter)
</div>
<div class="description">
<p>
-Synonym for <a href="Hash.html#M000119">Hash#stringify_keys</a>, but
+Synonym for <a href="Hash.html#M000151">Hash#stringify_keys</a>, but
modifies the receiver in place and returns it. With a <tt>filter</tt>
parameter, limits conversion to only a certain selection of keys.
</p>
<pre>
foo = { :name=>'Gavin', :wife=>:Lisa }
foo.stringify_keys! #=> { "name"=>"Gavin", "wife"=>:Lisa }
foo.inspect #=> { "name"=>"Gavin", "wife"=>:Lisa }
</pre>
<p>
This method is considered archaic. Use <a
-href="Hash.html#M000126">rekey</a> instead.
+href="Hash.html#M000159">rekey</a> instead.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000120_source')" id="l_M000120_source">+</a> ]</p>
- <div id="M000120_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000152_source')" id="l_M000152_source">+</a> ]</p>
+ <div id="M000152_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/symbolize_keys.rb, line 73</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stringify_keys!</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">filter</span>)
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filter</span>
<span class="ruby-identifier">rekey!</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">filter</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span> }
@@ -1445,11 +1629,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000115"></a><b>swap!</b>(key1, key2)
+ <a name="M000147"></a><b>swap!</b>(key1, key2)
</div>
<div class="description">
<p>
Swap the values of a pair of keys in place.
</p>
@@ -1459,12 +1643,12 @@
<p>
CREDIT: Gavin Sinclair
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000115_source')" id="l_M000115_source">+</a> ]</p>
- <div id="M000115_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000147_source')" id="l_M000147_source">+</a> ]</p>
+ <div id="M000147_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/swap.rb, line 9</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">swap!</span>(<span class="ruby-identifier">key1</span>, <span class="ruby-identifier">key2</span>)
<span class="ruby-identifier">tmp</span> = <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key1</span>]
<span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key1</span>] = <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">key2</span>]
@@ -1475,11 +1659,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000117"></a><b>symbolize_keys</b>(&filter)
+ <a name="M000149"></a><b>symbolize_keys</b>(&filter)
</div>
<div class="description">
<p>
Converts all keys in the <a href="Hash.html">Hash</a> to Symbols, returning
a new <a href="Hash.html">Hash</a>. With a <tt>filter</tt>, limits
@@ -1490,16 +1674,16 @@
foo.symbolize_keys #=> { :name=>"Gavin", :wife=>:Lisa }
foo.inspect #=> { "name" =>"Gavin", "wife"=>:Lisa }
</pre>
<p>
This method is considered archaic. Use <a
-href="Hash.html#M000126">rekey</a> instead.
+href="Hash.html#M000159">rekey</a> instead.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000117_source')" id="l_M000117_source">+</a> ]</p>
- <div id="M000117_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000149_source')" id="l_M000149_source">+</a> ]</p>
+ <div id="M000149_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/symbolize_keys.rb, line 20</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">symbolize_keys</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">filter</span>)
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filter</span>
<span class="ruby-identifier">rekey</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">filter</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_sym</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span> }
@@ -1511,31 +1695,31 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000118"></a><b>symbolize_keys!</b>(&filter)
+ <a name="M000150"></a><b>symbolize_keys!</b>(&filter)
</div>
<div class="description">
<p>
-Synonym for <a href="Hash.html#M000117">Hash#symbolize_keys</a>, but
+Synonym for <a href="Hash.html#M000149">Hash#symbolize_keys</a>, but
modifies the receiver in place and returns it. With a <tt>filter</tt>
parameter, limits conversion to only a certain selection of keys.
</p>
<pre>
foo = { 'name'=>'Gavin', 'wife'=>:Lisa }
foo.symbolize_keys! #=> { :name=>"Gavin", :wife=>:Lisa }
foo.inspect #=> { :name=>"Gavin", :wife=>:Lisa }
</pre>
<p>
This method is considered archaic. Use <a
-href="Hash.html#M000126">rekey</a> instead.
+href="Hash.html#M000159">rekey</a> instead.
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000118_source')" id="l_M000118_source">+</a> ]</p>
- <div id="M000118_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000150_source')" id="l_M000150_source">+</a> ]</p>
+ <div id="M000150_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/symbolize_keys.rb, line 37</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">symbolize_keys!</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">filter</span>)
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filter</span>
<span class="ruby-identifier">rekey!</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">filter</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_sym</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span> }
@@ -1547,11 +1731,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000075"></a><b>to_h</b>()
+ <a name="M000106"></a><b>to_h</b>()
</div>
<div class="description">
<p>
Return a rehashing of <em>self</em>.
</p>
@@ -1561,22 +1745,22 @@
<p>
CREDIT: Forian Gross
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000075_source')" id="l_M000075_source">+</a> ]</p>
- <div id="M000075_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000106_source')" id="l_M000106_source">+</a> ]</p>
+ <div id="M000106_source" class="dyn-source">
<pre>
-<span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 54</span>
+<span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 254</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_h</span>; <span class="ruby-identifier">rehash</span>; <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000102"></a><b>to_proc</b>()
+ <a name="M000134"></a><b>to_proc</b>()
</div>
<div class="description">
<p>
Constructs a <a href="Proc.html">Proc</a> object from a hash such that the
parameter of the <a href="Proc.html">Proc</a> is assigned the hash keys as
@@ -1592,12 +1776,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000102_source')" id="l_M000102_source">+</a> ]</p>
- <div id="M000102_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000134_source')" id="l_M000134_source">+</a> ]</p>
+ <div id="M000134_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/to_proc.rb, line 15</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_proc</span>
<span class="ruby-identifier">lambda</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">o</span><span class="ruby-operator">|</span>
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
@@ -1610,27 +1794,27 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000103"></a><b>to_proc_with_reponse</b>()
+ <a name="M000135"></a><b>to_proc_with_reponse</b>()
</div>
<div class="description">
<p>
-A fault-tolerent version of <a href="Hash.html#M000102">to_proc</a>.
+A fault-tolerent version of <a href="Hash.html#M000134">to_proc</a>.
</p>
<p>
-It works just like <a href="Hash.html#M000102">to_proc</a>, but the block
+It works just like <a href="Hash.html#M000134">to_proc</a>, but the block
will make sure# the object responds to the assignment.
</p>
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000103_source')" id="l_M000103_source">+</a> ]</p>
- <div id="M000103_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000135_source')" id="l_M000135_source">+</a> ]</p>
+ <div id="M000135_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/to_proc.rb, line 31</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_proc_with_reponse</span>
<span class="ruby-identifier">lambda</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">o</span><span class="ruby-operator">|</span>
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
@@ -1643,11 +1827,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000116"></a><b>to_struct</b>(struct_name)
+ <a name="M000148"></a><b>to_struct</b>(struct_name)
</div>
<div class="description">
<p>
A method to convert a <a href="Hash.html">Hash</a> into a <a
href="Struct.html">Struct</a>.
@@ -1662,12 +1846,12 @@
<p>
CREDIT: Daniel Berger
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000116_source')" id="l_M000116_source">+</a> ]</p>
- <div id="M000116_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000148_source')" id="l_M000148_source">+</a> ]</p>
+ <div id="M000148_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/to_struct.rb, line 12</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_struct</span>(<span class="ruby-identifier">struct_name</span>)
<span class="ruby-constant">Struct</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">struct_name</span>,<span class="ruby-operator">*</span><span class="ruby-identifier">keys</span>).<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">values</span>)
<span class="ruby-keyword kw">end</span>
@@ -1675,11 +1859,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000094"></a><b>traverse</b>(&b)
+ <a name="M000126"></a><b>traverse</b>(&b)
</div>
<div class="description">
<p>
Returns a new hash created by traversing the hash and its subhashes,
executing the given block on the key and value. The block should return a
@@ -1703,12 +1887,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000094_source')" id="l_M000094_source">+</a> ]</p>
- <div id="M000094_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000126_source')" id="l_M000126_source">+</a> ]</p>
+ <div id="M000126_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/traverse.rb, line 18</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">traverse</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">b</span>)
<span class="ruby-identifier">inject</span>({}) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">h</span>,(<span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span>)<span class="ruby-operator">|</span>
<span class="ruby-identifier">v</span> = ( <span class="ruby-constant">Hash</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">v</span> <span class="ruby-value">? </span><span class="ruby-identifier">v</span>.<span class="ruby-identifier">traverse</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">b</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">v</span> )
@@ -1721,15 +1905,15 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000095"></a><b>traverse!</b>(&b)
+ <a name="M000127"></a><b>traverse!</b>(&b)
</div>
<div class="description">
<p>
-In place version of <a href="Hash.html#M000094">traverse</a>, which
+In place version of <a href="Hash.html#M000126">traverse</a>, which
traverses the hash and its subhashes, executing the given block on the key
and value.
</p>
<pre>
h = { "A"=>"A", "B"=>"B" }
@@ -1739,12 +1923,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000095_source')" id="l_M000095_source">+</a> ]</p>
- <div id="M000095_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000127_source')" id="l_M000127_source">+</a> ]</p>
+ <div id="M000127_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/traverse.rb, line 36</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">traverse!</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">b</span>)
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">replace</span>( <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">traverse</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">b</span>) )
<span class="ruby-keyword kw">end</span>
@@ -1752,26 +1936,26 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000128"></a><b>update_each</b>( {|| ...}
+ <a name="M000161"></a><b>update_each</b>( {|| ...}
</div>
<div class="description">
<p>
Iterates through each pair and updates a the hash in place. This is
formally equivalent to mash! But does not use mash to accomplish the task.
-Hence <a href="Hash.html#M000128">update_each</a> is probably a touch
+Hence <a href="Hash.html#M000161">update_each</a> is probably a touch
faster.
</p>
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000128_source')" id="l_M000128_source">+</a> ]</p>
- <div id="M000128_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000161_source')" id="l_M000161_source">+</a> ]</p>
+ <div id="M000161_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/update_each.rb, line 10</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">update_each</span> <span class="ruby-comment cmt"># :yield:</span>
<span class="ruby-identifier">dup</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">update</span>(<span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span>))
@@ -1782,11 +1966,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000129"></a><b>update_keys</b>( {|| ...}
+ <a name="M000162"></a><b>update_keys</b>( {|| ...}
</div>
<div class="description">
<p>
Iterate over hash updating just the keys.
</p>
@@ -1798,12 +1982,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000129_source')" id="l_M000129_source">+</a> ]</p>
- <div id="M000129_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000162_source')" id="l_M000162_source">+</a> ]</p>
+ <div id="M000162_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/update_keys.rb, line 11</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">update_keys</span> <span class="ruby-comment cmt">#:yield:</span>
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">old_key</span><span class="ruby-operator">|</span> <span class="ruby-identifier">store</span>(<span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">old_key</span>), <span class="ruby-identifier">delete</span>(<span class="ruby-identifier">old_key</span>)) }
@@ -1815,11 +1999,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000077"></a><b>update_values</b>( {|| ...}
+ <a name="M000109"></a><b>update_values</b>( {|| ...}
</div>
<div class="description">
<p>
Iterate over hash updating just the values.
</p>
@@ -1831,12 +2015,12 @@
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000077_source')" id="l_M000077_source">+</a> ]</p>
- <div id="M000077_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000109_source')" id="l_M000109_source">+</a> ]</p>
+ <div id="M000109_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/update_values.rb, line 11</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">update_values</span> <span class="ruby-comment cmt">#:yield:</span>
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-identifier">each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">store</span>(<span class="ruby-identifier">k</span>, <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">v</span>)) }
@@ -1848,11 +2032,11 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000114"></a><b>weave</b>(h)
+ <a name="M000146"></a><b>weave</b>(h)
</div>
<div class="description">
<p>
Weave is a very uniqe hash operator. I is designed to merge to complex
hashes in according to sensible, regular pattern. The effect is akin to
@@ -1895,12 +2079,12 @@
<p>
CREDIT: Thomas Sawyer
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000114_source')" id="l_M000114_source">+</a> ]</p>
- <div id="M000114_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000146_source')" id="l_M000146_source">+</a> ]</p>
+ <div id="M000146_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/weave.rb, line 40</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weave</span>(<span class="ruby-identifier">h</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Hash expected"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">h</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">s</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">clone</span>
@@ -1945,22 +2129,22 @@
</div>
</div>
</div>
<div class="method">
<div class="title">
- <a name="M000096"></a><b>|</b>(other)
+ <a name="M000128"></a><b>|</b>(other)
</div>
<div class="description">
<p>
-Operator for <a href="Hash.html#M000091">reverse_merge</a>.
+Operator for <a href="Hash.html#M000123">reverse_merge</a>.
</p>
<p>
CREDIT: Trans
</p>
</div>
<div class="sourcecode">
- <p class="source-link">[ <a href="javascript:toggleSource('M000096_source')" id="l_M000096_source">+</a> ]</p>
- <div id="M000096_source" class="dyn-source">
+ <p class="source-link">[ <a href="javascript:toggleSource('M000128_source')" id="l_M000128_source">+</a> ]</p>
+ <div id="M000128_source" class="dyn-source">
<pre>
<span class="ruby-comment cmt"># File lib/core/facets/hash/op_or.rb, line 7</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-operator">|</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-identifier">other</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-keyword kw">self</span>)
<span class="ruby-keyword kw">end</span>
\ No newline at end of file