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">&amp;</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">&lt;&lt;</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">&amp;</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">&lt;&lt;</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">&amp;</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 &#8212;a keys array and a values array. </p> <pre> Hash.zipnew([&quot;a&quot;,&quot;b&quot;,&quot;c&quot;], [1,2,3]) #=&gt; { &quot;a&quot;=&gt;1, &quot;b&quot;=&gt;2, &quot;c&quot;=&gt;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>&amp;</b>(other) + <a name="M000114"></a><b>&amp;</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">&amp;</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 &#8217;+&#8217; 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>&lt;&lt;</b>(other) + <a name="M000130"></a><b>&lt;&lt;</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">&lt;&lt;</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) #=&gt; [ [1,2], { :base =&gt; &quot;HI&quot; } ] h.argumentize(:base) #=&gt; [ [&quot;HI&quot;], { :list =&gt; [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=&gt;1, :b=&gt;2 }.collate :a=&gt;3, :b=&gt;4, :c=&gt;5 #=&gt; { :a=&gt;[1,3], :b=&gt;[2,4], :c=&gt;[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">&lt;&lt;</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=&gt;[1], :b=&gt;[1,2], :c=&gt;3, :d=&gt;[] } + h.dearray_singluar_values #=&gt; { :a=&gt;1, :b=&gt;[1,2], :c=&gt;3, :d=&gt;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">&lt;</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">&lt;&lt;</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=&gt;[1], :b=&gt;[1,2], :c=&gt;3, :d=&gt;[] } + h.dearray_values #=&gt; { :a=&gt;1, :b=&gt;1, :c=&gt;3, :d=&gt;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&#8216;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, &amp;yld) + <a name="M000145"></a><b>delete_values_at</b>(*keys, &amp;yld) </div> <div class="description"> <p> Minor modification to Ruby&#8216;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">&amp;</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">&amp;</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>( &amp;yld ) + <a name="M000122"></a><b>each_with_key</b>( &amp;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">&amp;</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) #=&gt; {:a=&gt;1} h #=&gt; {:b=&gt;2,:c=&gt;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>(&amp;yld) + <a name="M000140"></a><b>graph!</b>(&amp;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=&gt;[[person1, date], [person2, date], [person3, date]]} +</p> +<p> +&#8230; which is a bit inconvient. Too many dates. I would rather like to +have: +</p> +<pre> + {date=&gt;[person1, person2, person3]]} +</pre> +<p> +This can be achieved by: +</p> +<pre> + birthdays.inject!({}){|h, (person, date)| (h[date] ||= []) &lt;&lt; person} +</pre> +<p> +I&#8216;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&#8216;s the cleaner code: +</p> +<p> +birthdays.group_by_value +</p> +<pre> + h = {&quot;A&quot;=&gt;1, &quot;B&quot;=&gt;1, &quot;C&quot;=&gt;1, &quot;D&quot;=&gt;2, &quot;E&quot;=&gt;2, &quot;F&quot;=&gt;2, &quot;G&quot;=&gt;3, &quot;H&quot;=&gt;3, &quot;I&quot;=&gt;3} + + h.group_by{|k, v| v} # ==&gt; {1=&gt;[[&quot;A&quot;, 1], [&quot;B&quot;, 1], [&quot;C&quot;, 1]], 2=&gt;[[&quot;D&quot;, 2], [&quot;E&quot;, 2], [&quot;F&quot;, 2]], 3=&gt;[[&quot;G&quot;, 3], [&quot;H&quot;, 3], [&quot;I&quot;, 3]]} + h.group_by_value # ==&gt; {1=&gt;[&quot;A&quot;, &quot;B&quot;, &quot;C&quot;], 2=&gt;[&quot;D&quot;, &quot;E&quot;, &quot;F&quot;], 3=&gt;[&quot;G&quot;, &quot;H&quot;, &quot;I&quot;]} + h.sort.group_by_value # ==&gt; [[1, [&quot;A&quot;, &quot;B&quot;, &quot;C&quot;]], [2, [&quot;D&quot;, &quot;E&quot;, &quot;F&quot;]], [3, [&quot;G&quot;, &quot;H&quot;, &quot;I&quot;]]] +</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">&lt;&lt;</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 =&gt; 1, :b =&gt; 2 } h.has_keys?( :a ) #=&gt; 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&#8216;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 &quot;true&quot; <a href="Hash.html#M000099">inverse</a> hash by +Create a &quot;true&quot; <a href="Hash.html#M000131">inverse</a> hash by storing mutliple values in Arrays. </p> <pre> h = {&quot;a&quot;=&gt;3, &quot;b&quot;=&gt;3, &quot;c&quot;=&gt;3, &quot;d&quot;=&gt;2, &quot;e&quot;=&gt;9, &quot;f&quot;=&gt;3, &quot;g&quot;=&gt;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">&lt;&lt;</span> <span class="ruby-node">&quot;#{k}#{pair_divider}#{v}&quot;</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>(&amp;yld) + <a name="M000139"></a><b>mash!</b>(&amp;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">&amp;</span><span class="ruby-identifier">yld</span>) <span class="ruby-identifier">replace</span>(<span class="ruby-identifier">mash</span>(<span class="ruby-operator">&amp;</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=&gt;1, :b=&gt;{:b1=&gt;1, :b2=&gt;2}} h.recursively{|h| h.rekey(&amp;:to_s) } =&gt; {&quot;a&quot;=&gt;1, &quot;b&quot;=&gt;{&quot;b1&quot;=&gt;1, &quot;b2&quot;=&gt;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">&amp;</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>(&amp;block) + <a name="M000113"></a><b>recursively!</b>(&amp;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">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-identifier">replace</span>(<span class="ruby-identifier">recursively</span>(<span class="ruby-operator">&amp;</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, &amp;block) + <a name="M000159"></a><b>rekey</b>(*args, &amp;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">&amp;</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">&amp;</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, &amp;block) + <a name="M000160"></a><b>rekey!</b>(*args, &amp;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=&gt;'Gavin', :wife=&gt;:Lisa } foo.rekey!{ |k| k.to_s } #=&gt; { &quot;name&quot;=&gt;&quot;Gavin&quot;, &quot;wife&quot;=&gt;: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">&amp;</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&#8216;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) #=&gt; {:a=&gt;1} h #=&gt; {:b=&gt;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>(&amp;filter) + <a name="M000151"></a><b>stringify_keys</b>(&amp;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 #=&gt; { &quot;name&quot;=&gt;&quot;Gavin&quot;, &quot;wife&quot;=&gt;:Lisa } foo.inspect #=&gt; { :name =&gt;&quot;Gavin&quot;, :wife=&gt;: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">&amp;</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>(&amp;filter) + <a name="M000152"></a><b>stringify_keys!</b>(&amp;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=&gt;'Gavin', :wife=&gt;:Lisa } foo.stringify_keys! #=&gt; { &quot;name&quot;=&gt;&quot;Gavin&quot;, &quot;wife&quot;=&gt;:Lisa } foo.inspect #=&gt; { &quot;name&quot;=&gt;&quot;Gavin&quot;, &quot;wife&quot;=&gt;: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">&amp;</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>(&amp;filter) + <a name="M000149"></a><b>symbolize_keys</b>(&amp;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 #=&gt; { :name=&gt;&quot;Gavin&quot;, :wife=&gt;:Lisa } foo.inspect #=&gt; { &quot;name&quot; =&gt;&quot;Gavin&quot;, &quot;wife&quot;=&gt;: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">&amp;</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>(&amp;filter) + <a name="M000150"></a><b>symbolize_keys!</b>(&amp;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'=&gt;'Gavin', 'wife'=&gt;:Lisa } foo.symbolize_keys! #=&gt; { :name=&gt;&quot;Gavin&quot;, :wife=&gt;:Lisa } foo.inspect #=&gt; { :name=&gt;&quot;Gavin&quot;, :wife=&gt;: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">&amp;</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>(&amp;b) + <a name="M000126"></a><b>traverse</b>(&amp;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">&amp;</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">&amp;</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>(&amp;b) + <a name="M000127"></a><b>traverse!</b>(&amp;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 = { &quot;A&quot;=&gt;&quot;A&quot;, &quot;B&quot;=&gt;&quot;B&quot; } @@ -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">&amp;</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">&amp;</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">&quot;Hash expected&quot;</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