[#26430] compile error of missing/*.c — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#26443] cvs [diff aborted]: cannot open file .cvsignore for comparing: No such file or directory — Tanaka Akira <akr@...17n.org>
最近、cvs diff に -k option を付けると、エラーになる (ことがある) ので
[#26463] String#each_byte and String#each_char — "NARUSE, Yui" <naruse@...>
成瀬です。
[#26468] $SAFE=1 の open-uri で redirect 時にエラー — Kazuhiko <kazuhiko@...>
かずひこです。
In article <m3zmsylimn.wl%kazuhiko@fdiary.net>,
まつもと ゆきひろです
In article <1120754832.716261.15867.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1120762886.189058.18880.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1120810939.815280.27104.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
In article <42CF1918.5000603@ruby-lang.org>,
前田です。
In article <42D7C230.7030509@ruby-lang.org>,
In article <42DDBA82.7030307@ruby-lang.org>,
[#26493] can't handle \c\ — KIMURA Koichi <kbk@...>
木村です。
卜部でございます。
木村です。
[#26508] rmdir(2) on windows doesn't set ENOTDIR — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
まつもと ゆきひろです
山本です。
山本です。
[#26530] removing static variables in parse.y — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
[#26566] cannot compile io.c on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26574] SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — Tanaka Akira <akr@...17n.org>
次のように、メッセージの最後が切れます。
まつもと ゆきひろです
なかだです。
山本です。
まつもと ゆきひろです
なかだです。
山本です。
なかだです。
山本です。
なかだです。
なかだです。
まつもと ゆきひろです
山本です。
この変更があってからだと思うのですが、リンカが以下のように警告を発するよ
卜部です。自己レス
At Sat, 30 Jul 2005 02:32:38 +0900,
[#26594] test_s_open_lock failed on Solaris — Tanaka Akira <akr@...17n.org>
次のように、Solaris で test_s_open_lock が失敗します。
[#26618] Re: [ruby-cvs] ruby/ext/socket, ruby, ruby: * ext/socket/socket.c (ruby_connect): break immediately if a — Tanaka Akira <akr@...17n.org>
In article <20050728015209.0F30DC6734@lithium.ruby-lang.org>,
In article <1122518643.429222.1408.nullmailer@x31.priv.netlab.jp>,
[#26623] Ruby2.0BlockParameterNotation — SASADA Koichi <ko1@...>
ささだです。
まつもと ゆきひろです
[#26628] show information of '--enable-pthread' — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
わたなべです。
こんにちは、なかむら(う)です。
永井@知能.九工大です.
永井@知能.九工大です.
In message <20050731.094203.74726476.nagai@ai.kyutech.ac.jp>
永井@知能.九工大です.
こんにちは、なかむら(う)です。
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
永井@知能.九工大です.
こんにちは、なかむら(う)です。
永井@知能.九工大です.
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#26639] SEGV at zsuper with anonymous rest args. — nobu@...
なかだです。
まつもと ゆきひろです
山本です。
なかだです。
[ruby-dev:26463] String#each_byte and String#each_char
成瀬です。
HEADに対して、
String#each_byte #=> array
と、組み込みの
String#each_char #=> array
String#each_char{|char| block } #=> str
の提案です。
まず、String#each_byte。
現在、stringのバイト単位の配列が欲しい場合は、
string.unpack('C*')
などとしますが、unpackを使うのは直感的ではありません。
過去に、each_*がブロックなしで動作する例が他に無い[ruby-list:37048]、
とされていますが、わたし自身はscanからの連想で、
何度かeach_byteをブロック無しで使い、その度に悲しい思いをしているので、
ブロック無しだと配列を返すようになるとうれしいです。
次にString#each_char。
過去にeach_charについては議論されているようですが、
eachのaliasを置き換えることは別とした場合、
each_charを組み込みで導入すること自体への問題点は、
メソッド名だけのように見えます。
matz wrote in [ruby-dev:23995]
> (2) M17N的な"character"ってのはコードポイント(に対応するバ
> イト列)ですから、たとえば合成文字の場合一部分だけを表現
> するものもcharacterになってしまいます。こういうものを堂々
> とcharと呼んではいけないような気もします。なんか言い名
> 前ないかな。
http://www.itscj.ipsj.or.jp/tutorials/tu48.htmlにて、
「文字構成要素でも符号位置を持っていれば,
それをcharacterと呼ぶことがSC 2の定義であり,
これらを合成した結果の"いわゆる文字"はcombining sequenceと
定義されている.」とされていることから、
このeach_charは挙動にふさわしい名前だと考えます。
よって、改めてeach_charの導入を提案します。
#Ruby M17Nって最近どうなってるのかな〜と思いつつ
Index: string.c
===================================================================
RCS file: /src/ruby/string.c,v
retrieving revision 1.230
diff -u -r1.230 string.c
--- string.c 4 Mar 2005 06:47:41 -0000 1.230
+++ string.c 7 Jul 2005 02:44:23 -0000
@@ -3760,6 +3760,15 @@
{
long i;
+ if (!rb_block_given_p()) {
+ VALUE ary = rb_ary_new();
+
+ for (i=0; i<RSTRING(str)->len; i++) {
+ rb_ary_push(ary, INT2FIX(RSTRING(str)->ptr[i] & 0xff));
+ }
+ return ary;
+ }
+
for (i=0; i<RSTRING(str)->len; i++) {
rb_yield(INT2FIX(RSTRING(str)->ptr[i] & 0xff));
}
@@ -4317,6 +4326,29 @@
/*
* call-seq:
+ * str.each_char => array
+ * str.each_char {|str| block } => str
+ *
+ * Passes each byte in <i>str</i> to the given block.
+ *
+ * "hello".each_char {|str| print str, ' ' }
+ *
+ * <em>produces:</em>
+ *
+ * h e l l o
+ */
+
+static VALUE
+rb_str_each_char(str)
+ VALUE str;
+{
+ VALUE re = rb_reg_compile(".", 1, ONIG_OPTION_MULTILINE);
+ return rb_str_scan(str, re);
+}
+
+
+/*
+ * call-seq:
* str.hex => integer
*
* Treats leading characters from <i>str</i> as a string of
hexadecimal digits
@@ -4754,6 +4786,7 @@
rb_define_method(rb_cString, "each_line", rb_str_each_line, -1);
rb_define_method(rb_cString, "each", rb_str_each_line, -1);
rb_define_method(rb_cString, "each_byte", rb_str_each_byte, 0);
+ rb_define_method(rb_cString, "each_char", rb_str_each_char, 0);
rb_define_method(rb_cString, "sum", rb_str_sum, -1);
--
NARUSE, Yui <naruse@airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA