[#45174] [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname — Yui NARUSE <naruse@...>
9 messages
2012/02/02
[#45177] Re: [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname
— Tanaka Akira <akr@...>
2012/02/02
2012年2月2日17:16 Yui NARUSE <naruse@airemix.jp>:
[#45178] Re: [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname
— Tanaka Akira <akr@...>
2012/02/02
2012年2月2日18:12 Tanaka Akira <akr@fsij.org>:
[#45179] Re: [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname
— "NARUSE, Yui" <naruse@...>
2012/02/02
(2012/02/02 18:33), Tanaka Akira wrote:
[#45192] Re: [ruby-trunk - Feature #5959][Assigned] Addrinfo#inspectname
— Tanaka Akira <akr@...>
2012/02/05
2012年2月2日19:13 NARUSE, Yui <naruse@airemix.jp>:
[#45183] Plan to 1.9.3 1st patch release — "NARUSE, Yui" <naruse@...>
もう気分は 2.0 なので正直 1.9.3 とかどうでもいいんですけど(ぇー)、
8 messages
2012/02/03
[#45184] Re: Plan to 1.9.3 1st patch release
— KOSAKI Motohiro <kosaki.motohiro@...>
2012/02/03
> = backport 時のレビューの廃止
[ruby-dev:45236] [ruby-trunk - Feature #4653][Rejected] [PATCH 1/1] new method Enumerable#rude_map
From:
Yusuke Endoh <mame@...>
Date:
2012-02-13 11:13:37 UTC
List:
ruby-dev #45236
Issue #4653 has been updated by Yusuke Endoh.
Status changed from Assigned to Rejected
まつもとさんが #4890 のやり方がいいと言ったので (#708) 、
2/8 は Enumerable::Lazy 記念日。
--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Feature #4653: [PATCH 1/1] new method Enumerable#rude_map
https://bugs.ruby-lang.org/issues/4653
Author: Shyouhei Urabe
Status: Rejected
Priority: Normal
Assignee: Yukihiro Matsumoto
Category: core
Target version: 2.0.0
From e6dd7bd9b5769bae5d81416da7a2b4003a43ba06 Mon Sep 17 00:00:00 2001
Message-Id: <e6dd7bd9b5769bae5d81416da7a2b4003a43ba06.1304863013.git.shyouhei@ruby-lang.org>
From: URABE, Shyouhei <shyouhei@ruby-lang.org>
Date: Sun, 8 May 2011 22:51:28 +0900
Subject: [PATCH 1/1] new method Enumerable#rude_map
時としてmapが配列を返さない方がいいのにと思うことがあります。
例としてはlzmaで圧縮されており解凍するととても大きくなるテキストファ
イルがあったとして、それを解凍して行番号をふってからHTML escapeして
<pre></pre>ではさんでから連結したものをlzmaで圧縮しなおす必要があっ
たとします(注:実話)。ここで「行番号をふって」と「HTML escapeして」を
素直に考えると、lzcatをpopenしたものに対して
io.each_line.map.with_index.map. ... とかいう構造がRubyとしては自然
かと思います。が、mapが配列を作ってしまうというのがメモリ消費量的に
よくありません。できればEnumeratorですっきりと処理したいところです。
というわけでmapなんだけど配列じゃなくてEnumeratorを返すmapの変種があ
るといいとおもうのですがどうでしょうか。1.9にはもうflat_mapがあるの
でなんとか_mapが増える心理的抵抗は少ないかなと思うので新規メソッドに
してみました。いきなりmapの戻り値の型が変わるのでも私はいいですけど
ちょっとやりすぎかとも思います。
Signed-off-by: URABE, Shyouhei <shyouhei@ruby-lang.org>
diff --git a/enum.c b/enum.c
index 584b838..449406b 100644
--- a/enum.c
+++ b/enum.c
@@ -462,6 +462,41 @@ enum_flat_map(VALUE obj)
return ary;
}
+static VALUE
+rude_map_ii(VALUE i, VALUE y, int c, VALUE *v)
+{
+ return rb_funcall(y, rb_intern("<<"), 1, enum_yield(c, v));
+}
+
+static VALUE
+rude_map_i(VALUE y, VALUE i, int c, VALUE *v)
+{
+ return rb_block_call(i, id_each, 0, 0, rude_map_ii, y);
+}
+
+/*
+ * call-seq:
+ * enum.rude_map {| obj | block } -> enumerator
+ * enum.rude_map -> enumerator
+ *
+ * Identical to Enumerable#map, except that it returns an enumerator
+ * rather than an array.
+ *
+ * Without a block it is just another Object#to_enum.
+ *
+ */
+
+static VALUE
+enum_rude_map(VALUE obj)
+{
+ VALUE ret;
+ RETURN_ENUMERATOR(obj, 0, 0);
+
+ ret = rb_obj_alloc(rb_cEnumerator);
+ rb_block_call(ret, rb_intern("initialize"), 0, 0, rude_map_i, obj);
+ return ret;
+}
+
/*
* call-seq:
* enum.to_a -> array
@@ -2679,6 +2714,7 @@ Init_Enumerable(void)
rb_define_method(rb_mEnumerable, "collect", enum_collect, 0);
rb_define_method(rb_mEnumerable, "map", enum_collect, 0);
rb_define_method(rb_mEnumerable, "flat_map", enum_flat_map, 0);
+ rb_define_method(rb_mEnumerable, "rude_map", enum_rude_map, 0);
rb_define_method(rb_mEnumerable, "collect_concat", enum_flat_map, 0);
rb_define_method(rb_mEnumerable, "inject", enum_inject, -1);
rb_define_method(rb_mEnumerable, "reduce", enum_inject, -1);
--
1.7.0.4
--
http://bugs.ruby-lang.org/