[#33561] open-uri problem — rubikitch@...
るびきちです。
[#33567] rational, complex and nuby — Tadayoshi Funaba <tadf@...>
ruby に rational と complex を組みこもうと試していて nuby という派生物
なかだです。
> 若干古い1.8.6がベースでしょうか。
なかだです。
> 2002/01/25版にその後の修正を手で追加した状態? ChangeLogをみたら、
なかだです。
> ちょっと見たところ、Enumerable#stable_sort_byがsortを使っている
原です。
[#33580] Re: cgi.rb再構築案 — "Makoto Kuwata" <kwa@...>
桑田といいます。
まつもと ゆきひろです
なかだです。
[#33611] Solaris で timeout.rb が Segmentation fault する。 — shiiya@...
はじめまして。椎屋と申します。
なかだです。
椎屋です。反応ありがとうございます。
なかだです。
さとうふみやす @ OSS テクノロジです。
In article <87r6foys1z.wl%[email protected]>,
At Fri, 8 Feb 2008 14:00:35 +0900,
In article <87prv8yovi.wl%[email protected]>,
とみたです。
In article <[email protected]>,
[#33621] EUC-KR <-> UTF-8 transition table — "Park Ji-In" <tisphie@...>
朴 芝印です。
成瀬です。
At 05:00 08/02/07, NARUSE, Yui wrote:
朴 芝印です。
[#33628] encdet.rb — Tanaka Akira <akr@...>
前から考えていたのですが、ファイル先頭の magic comment や
まつもと ゆきひろです
In article <[email protected]>,
須藤です。
In article <[email protected]>,
須藤です。
In article <[email protected]>,
[#33646] require/load/autoload の encoding オプション — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
[#33662] rational, complex and mathn — Tadayoshi Funaba <tadf@...>
rational は floor、truncate、ceil、round を定義していません。Numeric
他にも問題、課題はあると思います。すぐに解決できるものと、そうでないも
ひとつ書き忘れました。
まつもと ゆきひろです
> 原さんのrationalは導入予定がありますので、この機会にもう一度
原です。
> 前にふなばさんと個人的なメールのやりとりで、結局また私がrationalをまと
原です。
> > それなりに速くはなるし、単純なところでそれなりに満足していますが、一度、
nurat 0.0.2 を出しました (ついでに nucomp も)。
仕様を確認していきたいと思います。
まつもと ゆきひろです
原です。
> > new!はRubyで実装しているためにだけ必要なので、Cで実装するな
原です。
> Rational::Unify が定義されているときは、Rational.new(1,1) で Integer
> Rational() は、1つか2つの引数をとる。
> 実際的に重要な機能が Rational() という名前で固定されるのはクラスの定義
もうあまり手を入れないでおこうと思ったのです、つい手を入れてしまいまし
原です。
ちょっと実験してみました。原さんの rational は、かけ算割り算が速いので、
で、考えていたんですが、目的は、最速の rational を作ることではなくて、
原です。
成瀬です。
まつもと ゆきひろです
> はい。Complexについても1.9の間に組み込んでよいと思います。
まつもと ゆきひろです
nurat を組みこんでみました。最低限必要な修正だけになっていると思います。
rational と complex を 1.9 に組みこむ作業をしました。
異議がなければ、若干の手直しの後、次週末にでも trunk にコミットしよう
> 異議がなければ、若干の手直しの後、次週末にでも trunk にコミットしよう
まつもと ゆきひろです
[#33674] erb.rb の仕様について — "Makoto Kuwata" <kwa@...>
桑田といいます。
[#33676] Suggestion: Proc#curry — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#33679] bigdecimal — Tadayoshi Funaba <tadf@...>
bigdecimal/math.rb の BigMath は、利用者が include してつかうことを前
Integer や Float に比べると、BigDicimal() は、1 や 1.1 を受けつけない、
斎藤と申します。
> 仮にBigDecimal(1.1)を、(二進小数として)受け付けると、「BigDecimalでは、
まつもと ゆきひろです
[#33699] trunk: インストールファイルのアクセス権 — pegacorn <subscriber.jp@...>
trunk で、インストールファイルのアクセス権が適切に設定されないものが
[#33712] Array の product の戻り値 — "Hideo Konami" <konami@...>
小波です。
[#33726] Re: [ruby-cvs:22680] Ruby:r15443 (trunk): * bootstraptest/runner.rb, bootstraptest/test_method.rb, enc/depend, — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
成瀬です。
In article <[email protected]>,
Tanaka Akira wrote:
こんにちは、なかむら(う)です。
成瀬です。
[#33825] Ruby M17N 会議の議事録 — "NARUSE, Yui" <naruse@...>
成瀬です。
[#33837] spec of Rational — Shin-ichiro HARA <sinara@...>
原です。
[#33838] 文字列処理の高速化 ? — Martin Duerst <duerst@...>
ただの一例ですが、先週の金曜日に松本さんに見せたときに
[#33843] IO.copy_stream — Tanaka Akira <akr@...>
IO.copy_stream をつけるのはどうでしょうか。
[#33889] Re: [ ruby-Bugs-17454 ] irb crash while iterating over all objects — Urabe Shyouhei <shyouhei@...>
卜部です。ちょっとお知恵を拝借したく。
ミスって送信ボタン押しちゃった
こんにちは、なかむら(う)です。
なかだです。
Nobuyoshi Nakada さんは書きました:
豊福です。
まつもと ゆきひろです
豊福です。
まつもと ゆきひろです
豊福です。
まつもと ゆきひろです
豊福です。
[#33894] character encodings differ: US-ASCII and dummy encoding — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
[#33916] UTF_16LE.dummy? returns false — sheepman <sheepman@...>
こんにちは sheepman です。
[#33926] --host=i586-mingw32msvc — Kouhei Sutou <kou@...>
須藤です。
[#33937] patch for ruby_1_8_6/lib/rexml/element.rb@12852 — oshida@...
押田です。
[#33943] warning about space before argument parentheses — Nobuyoshi Nakada <nobu@...>
なかだです。
[ruby-dev:33768] Re: [ruby-cvs:22680] Ruby:r15443 (trunk): * bootstraptest/runner.rb, bootstraptest/test_method.rb, enc/depend,
なかだです。
At Wed, 13 Feb 2008 14:24:03 +0900,
Nobuyoshi Nakada wrote in [ruby-dev:33743]:
> 簡単に#{Regexp.quote()}を書く方法があって、sub/gsubの第二引数が
> Regexpだったらsourceを使う、とかならできるかもしれませんが、前者
> が難問です。
/\q#{string_expr}/で/#{Regexp.quote(string_expr)}/になるようにし
てみました。しかし、1.8だと/\1/でも問題ないんですが、1.9では厳密
になっているらしくて invalid backref number/name というエラーに
なってしまいます。いまいち使えない…。
Index: parse.y
===================================================================
--- parse.y (revision 15457)
+++ parse.y (working copy)
@@ -438,4 +438,5 @@ extern int rb_dvar_defined(ID);
extern int rb_local_defined(ID);
extern int rb_parse_in_eval(void);
+extern VALUE rb_reg_quote(VALUE);
static VALUE reg_compile_gen(struct parser_params*, VALUE, int);
@@ -708,5 +709,5 @@ static void ripper_compile_error(struct
%token tLAMBDA /* -> */
%token tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tWORDS_BEG tQWORDS_BEG
-%token tSTRING_DBEG tSTRING_DVAR tSTRING_END tLAMBEG
+%token tSTRING_DBEG tSTRING_DVAR tSTRING_END tREGEXP_QUOTE tLAMBEG
/*
@@ -3851,4 +3852,32 @@ string_content : tSTRING_CONTENT
%*/
}
+ | tREGEXP_QUOTE
+ {
+ $<node>$ = lex_strterm;
+ lex_strterm = 0;
+ lex_state = EXPR_BEG;
+ COND_PUSH(0);
+ CMDARG_PUSH(0);
+ }
+ compstmt '}'
+ {
+ lex_strterm = $<node>2;
+ COND_LEXPOP();
+ CMDARG_LEXPOP();
+ /*%%%*/
+ if ($3) $3->flags &= ~NODE_NEWLINE;
+ $$ = new_evstr($3);
+ if (nd_type($$) == NODE_STR) {
+ $$->nd_lit = rb_reg_quote($$->nd_lit);
+ }
+ else {
+ $$ = NEW_CALL(NEW_LIT(rb_cRegexp), rb_intern("quote"),
+ NEW_LIST($$));
+ $$ = NEW_EVSTR($$);
+ }
+ /*%
+ $$ = dispatch1(regexp_quote, $3);
+ %*/
+ }
;
@@ -5342,4 +5371,24 @@ parser_tokadd_mbchar(struct parser_param
static int
+parser_regexp_quote_p(struct parser_params *parser, int func)
+{
+ if (!(func & STR_FUNC_EXPAND)) return 0;
+ if (lex_p + 1 >= lex_pend) return 0;
+ switch (lex_p[1]) {
+ case '{':
+ lex_p += 2;
+ return 1;
+ case '#':
+ if (lex_p + 2 < lex_pend && lex_p[2] == '{') {
+ lex_p += 3;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+#define regexp_quote_p(func) parser_regexp_quote_p(parser, func)
+
+static int
parser_tokadd_string(struct parser_params *parser,
int func, int term, int paren, long *nest,
@@ -5414,4 +5463,9 @@ parser_tokadd_string(struct parser_param
continue;
+ case 'q':
+ if (regexp_quote_p(func)) {
+ lex_p = beg;
+ goto exit;
+ }
default:
if (func & STR_FUNC_REGEXP) {
@@ -5464,4 +5518,5 @@ parser_tokadd_string(struct parser_param
tokadd(c);
}
+ exit:
*encp = enc;
return c;
@@ -5511,4 +5566,7 @@ parser_parse_string(struct parser_params
tokadd('#');
}
+ else if (c == '\\' && peek('q') && regexp_quote_p(func)) {
+ return tREGEXP_QUOTE;
+ }
pushback(c);
if (tokadd_string(func, term, paren, "e->nd_nest,
Index: re.c
===================================================================
--- re.c (revision 15457)
+++ re.c (working copy)
@@ -306,5 +306,5 @@ rb_reg_desc(const char *s, long len, VAL
*/
-static VALUE
+VALUE
rb_reg_source(VALUE re)
{
@@ -2837,4 +2837,5 @@ rb_reg_regsub(VALUE str, VALUE src, stru
rb_encoding *str_enc = rb_enc_get(str);
rb_encoding *src_enc = rb_enc_get(src);
+ int quote = 0;
p = s = RSTRING_PTR(str);
@@ -2867,4 +2868,18 @@ rb_reg_regsub(VALUE str, VALUE src, stru
s += clen;
+ switch (c) {
+ case 'Q':
+ quote = 1;
+ p = s;
+ continue;
+ case 'E':
+ quote = 0;
+ p = s;
+ continue;
+ default:
+ if (quote) continue;
+ break;
+ }
+
p = s;
switch (c) {
Index: string.c
===================================================================
--- string.c (revision 15457)
+++ string.c (working copy)
@@ -2751,4 +2751,13 @@ get_pat(VALUE pat, int quote)
}
+extern VALUE rb_reg_source(VALUE);
+static VALUE
+get_repl(VALUE repl)
+{
+ if (TYPE(repl) == T_REGEXP) {
+ return rb_reg_source(repl);
+ }
+ return repl;
+}
/*
@@ -2775,5 +2784,5 @@ rb_str_sub_bang(int argc, VALUE *argv, V
}
else if (argc == 2) {
- repl = argv[1];
+ repl = get_repl(argv[1]);
StringValue(repl);
if (OBJ_TAINTED(repl)) tainted = 1;
@@ -2903,5 +2912,5 @@ str_gsub(int argc, VALUE *argv, VALUE st
break;
case 2:
- repl = argv[1];
+ repl = get_repl(argv[1]);
StringValue(repl);
if (OBJ_TAINTED(repl)) tainted = 1;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦