[#75225] [Ruby trunk Feature#12324] Support OpenSSL 1.1.0 (and drop support for 0.9.6/0.9.7) — k@...
Issue #12324 has been reported by Kazuki Yamaguchi.
6 messages
2016/04/27
[#78693] Re: [Ruby trunk Feature#12324] Support OpenSSL 1.1.0 (and drop support for 0.9.6/0.9.7)
— Eric Wong <normalperson@...>
2016/12/17
k@rhe.jp wrote:
[#78701] Re: [Ruby trunk Feature#12324] Support OpenSSL 1.1.0 (and drop support for 0.9.6/0.9.7)
— Kazuki Yamaguchi <k@...>
2016/12/17
On Sat, Dec 17, 2016 at 01:31:12AM +0000, Eric Wong wrote:
[#78702] Re: [Ruby trunk Feature#12324] Support OpenSSL 1.1.0 (and drop support for 0.9.6/0.9.7)
— Eric Wong <normalperson@...>
2016/12/17
Kazuki Yamaguchi <k@rhe.jp> wrote:
[ruby-core:74892] [Ruby trunk Feature#12080] Enumerable#first, Array#last with block
From:
k@...
Date:
2016-04-12 13:41:44 UTC
List:
ruby-core #74892
Issue #12080 has been updated by Kazuki Yamaguchi.
File v2-0001-Enumerable-Array-Range-first-Array-Range-last-wit.patch added
ping... Any thoughts?
(updated patch to apply successfully to the current trunk)
----------------------------------------
Feature #12080: Enumerable#first, Array#last with block
https://bugs.ruby-lang.org/issues/12080#change-58019
* Author: Kazuki Yamaguchi
* Status: Open
* Priority: Normal
* Assignee:
----------------------------------------
I propose a new feature: {Enumerable,Array,Range}#first, {Array,Range}#last with block.
If no argument is passed:
* `enum.first { block }` works as the same as `enum.find { block }`
* `ary.last { block }` works as the same as `ary.reverse_each.find { block }`
If a integer is passed:
* `enum.first(n) { block }` works as the same as `enum.lazy.select { block }.first(n)`
* `ary.last(n) { block }` works as the same as `ary.reverse_each.lazy.select { block }.first(n).reverse`
Examples:
~~~ruby
ary = [1, 2, 3, 4, 5, 6]
ary.first { |i| i.even? } #=> 2
ary.first(2) { |i| i.even? } #=> [2, 4]
ary.last { |i| i.odd? } #=> 5
ary.last(2) { |i| i.odd? } #=> [3, 5]
~~~
Currently these methods just ignore given blocks.
~~~ruby
ary.first { |i| i > 3 } #=> 1
~~~
---
I sometimes write such code:
~~~ruby
ary = ["DEBUG: a", "WARN: b", ..., "WARN: y", "DEBUG: z"] # assume a large Array
ary.reverse_each.lazy.reject { |line| line.include?("DEBUG") }.first(10).reverse #=> returns last 10 non-debug logs
~~~
But this is redundant and not intuitive. In this case, I just want the last 10 logs which is not debug message in the original order.
With the new Array#last, I can refactor it:
~~~ruby
ary.last(10) { |line| !line.include?("DEBUG") }
~~~
I think this represents what I want to do much more clearly.
---Files--------------------------------
0001-Enumerable-Array-Range-first-Array-Range-last-with-b.patch (11.5 KB)
v2-0001-Enumerable-Array-Range-first-Array-Range-last-wit.patch (14 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>