Ruby Issue Tracking System: Issueshttps://bugs.ruby-lang.org/https://bugs.ruby-lang.org/favicon.ico?17113305112021-10-22T08:45:32ZRuby Issue Tracking System
Redmine Ruby master - Bug #18261 (Closed): String#prepend inconsistent documentationhttps://bugs.ruby-lang.org/issues/182612021-10-22T08:45:32Zgreggzst (Grzegorz Jakubiak)
<p>I noticed documentation at <a href="https://docs.ruby-lang.org/en/3.0.0/String.html#method-i-prepend" class="external">https://docs.ruby-lang.org/en/3.0.0/String.html#method-i-prepend</a> says:</p>
<pre><code>Returns a new String containing the concatenation of all given other_strings and self:
</code></pre>
<p>but <code>String#prepend</code> modifies string in place; code example:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">pry</span><span class="p">(</span><span class="n">main</span><span class="p">)</span><span class="o">></span> <span class="n">string</span> <span class="o">=</span> <span class="s1">'my_string'</span>
<span class="o">=></span> <span class="s2">"my_string"</span>
<span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">pry</span><span class="p">(</span><span class="n">main</span><span class="p">)</span><span class="o">></span> <span class="n">string</span><span class="p">.</span><span class="nf">object_id</span>
<span class="o">=></span> <span class="mi">135120</span>
<span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">pry</span><span class="p">(</span><span class="n">main</span><span class="p">)</span><span class="o">></span> <span class="n">string</span><span class="p">.</span><span class="nf">prepend</span><span class="p">(</span><span class="s1">'prefix_'</span><span class="p">).</span><span class="nf">object_id</span>
<span class="o">=></span> <span class="mi">135120</span>
<span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">pry</span><span class="p">(</span><span class="n">main</span><span class="p">)</span><span class="o">></span> <span class="n">string</span>
<span class="o">=></span> <span class="s2">"prefix_my_string"</span>
</code></pre>
<p>I checked the docs in the <code>string.c</code> file on github and they are actually correct:</p>
<pre><code>Prepends each string in +other_strings+ to +self+ and returns +self+:
</code></pre> Ruby master - Feature #17277 (Closed): Make Enumerator#with_index yield row and col indices for M...https://bugs.ruby-lang.org/issues/172772020-10-21T10:07:09Zgreggzst (Grzegorz Jakubiak)
<p>Given a matrix:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">matrix</span> <span class="o">=</span> <span class="no">Matrix</span><span class="p">[[</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">8</span><span class="p">]]</span>
</code></pre>
<p>You could get the row and col indices of a matrix using <code>Matrix#each_with_index</code>:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">matrix</span>
<span class="p">.</span><span class="nf">each_with_index</span> <span class="p">{</span> <span class="o">|</span><span class="n">e</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="o">|</span> <span class="nb">p</span> <span class="p">[</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">]</span> <span class="p">}</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
<span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span>
<span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span>
<span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span>
<span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
<span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span>
<span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span>
<span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span>
<span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
</code></pre>
<p>You can chain it with other enumerators and access indices within them:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">matrix</span>
<span class="p">.</span><span class="nf">each_with_index</span>
<span class="p">.</span><span class="nf">filter_map</span> <span class="p">{</span> <span class="o">|</span><span class="n">e</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="o">|</span> <span class="p">[</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">]</span> <span class="k">if</span> <span class="n">e</span> <span class="o">%</span> <span class="mi">4</span> <span class="o">==</span> <span class="mi">0</span><span class="p">}</span>
<span class="c1"># => [[0, 0], [0, 3], [1, 2], [2, 1], [2, 3]]</span>
</code></pre>
<p>Meanwhile, <code>with_index</code> after <code>Matrix#each</code> returns flattened indices, not row or column indices, which does not look right:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">matrix</span>
<span class="p">.</span><span class="nf">each</span><span class="p">.</span><span class="nf">with_index</span> <span class="p">{</span> <span class="o">|</span><span class="n">e</span><span class="p">,</span> <span class="n">index</span><span class="o">|</span> <span class="nb">p</span> <span class="n">index</span> <span class="p">}</span>
<span class="mi">0</span>
<span class="mi">1</span>
<span class="mi">2</span>
<span class="mi">3</span>
<span class="mi">4</span>
<span class="mi">5</span>
<span class="mi">6</span>
<span class="mi">7</span>
<span class="mi">8</span>
<span class="mi">9</span>
<span class="mi">10</span>
<span class="mi">11</span>
</code></pre>
<p>I feel we should override <code>with_index</code> for <code>Matrix</code> so it returns row and column indices.</p> Ruby master - Feature #14473 (Closed): Add Range#subrange?https://bugs.ruby-lang.org/issues/144732018-02-13T20:58:01Zgreggzst (Grzegorz Jakubiak)
<p>Hi there,</p>
<p>I'd like to propose a method that returns true when a range that the method gets called on is a subrange of a range passed in as an argument.</p>
<p>Example:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="p">(</span><span class="mi">2</span><span class="o">..</span><span class="mi">4</span><span class="p">).</span><span class="nf">subrange?</span><span class="p">(</span><span class="mi">1</span><span class="o">...</span><span class="mi">4</span><span class="p">)</span>
<span class="o">=></span> <span class="kp">true</span>
<span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="o">..</span><span class="mi">2</span><span class="p">).</span><span class="nf">subrange?</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="o">..</span><span class="mi">3</span><span class="p">)</span>
<span class="o">=></span> <span class="kp">false</span>
</code></pre> Ruby master - Feature #14151 (Closed): Make Matrix#[]= public methodhttps://bugs.ruby-lang.org/issues/141512017-12-03T09:45:03Zgreggzst (Grzegorz Jakubiak)
<p>I don't even understand why this method hasn't been public since the beginning. I've come to a point when I have to create a matrix in a specific way using row and column indices and I can't use #build with a block because then indices go from the beginning of matrix whereas I have to from the center of the matrix. So what I wanted to do is to create a zero matrix and the fill it in a proper way but I can't without using #[]=. I know I can reopen class and that's what I'm doing but this just doesn't make sense. If we can change elements in an array like so using #[]= then why matrices can't use that as well?</p> Ruby master - Feature #14116 (Feedback): Add Matrix #exponentiate method as Matlab's exphttps://bugs.ruby-lang.org/issues/141162017-11-19T20:11:51Zgreggzst (Grzegorz Jakubiak)
<p>Add exponentiate method which results in returning a new matrix with each element being an exponent of the number e.<br>
Here is PR for that: <a href="https://github.com/ruby/ruby/pull/1762" class="external">https://github.com/ruby/ruby/pull/1762</a></p>