[#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%fumiyas@osstech.jp>,
At Fri, 8 Feb 2008 14:00:35 +0900,
In article <87prv8yovi.wl%fumiyas@osstech.jp>,
とみたです。
In article <20080219182203.2559fc3e.tommy@tmtm.org>,
[#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 <E1JN0fO-00084M-Dg@x61.netlab.jp>,
須藤です。
In article <20080214.203702.439940124859613817.kou@cozmixng.org>,
須藤です。
In article <20080215.210932.373570872046057306.kou@cozmixng.org>,
須藤です。
In article <20080219.210130.275954098091635027.kou@cozmixng.org>,
[#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 <47B26518.60309@airemix.com>,
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:33751] Re: HashからStructを作る
なかだです。
At Wed, 13 Feb 2008 13:07:52 +0900,
rubikitch@ruby-lang.org wrote in [ruby-dev:33734]:
> あるいは、Hashのキーを固定する(追加不可能、存在しないキーにアクセスしたら例外)
> メソッドを作成できないものでしょうか?
> Hash#fix_keys, Hash#freeze_keys, Hash#fix, Hash#lock, Hash#pin, Hash#fixate…
ためしに作ってみました。fix!,unfix!,fixed?を追加、[],[]=,delete
で存在しないキーにアクセスしたらKeyErrorを発生します。
initialize,shift,clear,delete_ifなどの単独でキーを指定するのでな
いものは例外にはなりません。これだとfixというのとはちょっとイメー
ジが違うような気がしますが。
Index: hash.c
===================================================================
--- hash.c (revision 15455)
+++ hash.c (working copy)
@@ -25,4 +25,5 @@ static VALUE rb_hash_s_try_convert(VALUE
#define HASH_DELETED FL_USER1
#define HASH_PROC_DEFAULT FL_USER2
+#define HASH_FIXED FL_USER3
VALUE
@@ -426,4 +427,25 @@ rb_hash_rehash(VALUE hash)
}
+VALUE
+rb_hash_fix(VALUE hash)
+{
+ FL_SET(hash, HASH_FIXED);
+ return hash;
+}
+
+VALUE
+rb_hash_unfix(VALUE hash)
+{
+ FL_UNSET(hash, HASH_FIXED);
+ return hash;
+}
+
+VALUE
+rb_hash_fixed_p(VALUE hash)
+{
+ if (FL_TEST(hash, HASH_FIXED)) return Qtrue;
+ return Qfalse;
+}
+
/*
* call-seq:
@@ -446,4 +468,7 @@ rb_hash_aref(VALUE hash, VALUE key)
if (!RHASH(hash)->ntbl || !st_lookup(RHASH(hash)->ntbl, key, &val)) {
+ if (FL_TEST(hash, HASH_FIXED)) {
+ rb_raise(rb_eKeyError, "key not found");
+ }
return rb_funcall(hash, id_default, 1, key);
}
@@ -683,12 +708,17 @@ VALUE
rb_hash_delete(VALUE hash, VALUE key)
{
- VALUE val;
+ VALUE val = Qundef;
- rb_hash_modify(hash);
- val = rb_hash_delete_key(hash, key);
+ rb_hash_modify_check(hash);
+ if (RHASH(hash)->ntbl) {
+ val = rb_hash_delete_key(hash, key);
+ }
if (val != Qundef) return val;
if (rb_block_given_p()) {
return rb_yield(key);
}
+ else if (FL_TEST(hash, HASH_FIXED)) {
+ rb_raise(rb_eKeyError, "key not found");
+ }
return Qnil;
}
@@ -736,8 +766,10 @@ rb_hash_shift(VALUE hash)
struct shift_var var;
- rb_hash_modify(hash);
+ rb_hash_modify_check(hash);
var.key = Qundef;
- rb_hash_foreach(hash, RHASH(hash)->iter_lev > 0 ? shift_i_safe : shift_i,
- (st_data_t)&var);
+ if (RHASH(hash)->ntbl) {
+ rb_hash_foreach(hash, RHASH(hash)->iter_lev > 0 ? shift_i_safe : shift_i,
+ (st_data_t)&var);
+ }
if (var.key != Qundef) {
@@ -929,10 +961,14 @@ VALUE
rb_hash_aset(VALUE hash, VALUE key, VALUE val)
{
- rb_hash_modify(hash);
- if (TYPE(key) != T_STRING || st_lookup(RHASH(hash)->ntbl, key, 0)) {
- st_insert(RHASH(hash)->ntbl, key, val);
+ rb_hash_modify_check(hash);
+ if (TYPE(key) != T_STRING ||
+ (RHASH(hash)->ntbl && st_lookup(RHASH(hash)->ntbl, key, 0))) {
+ st_insert(rb_hash_tbl(hash), key, val);
}
else {
- st_add_direct(RHASH(hash)->ntbl, rb_str_new4(key), val);
+ if (FL_TEST(hash, HASH_FIXED)) {
+ rb_raise(rb_eKeyError, "can't insert into fixed hash");
+ }
+ st_add_direct(rb_hash_tbl(hash), rb_str_new4(key), val);
}
return val;
@@ -2613,4 +2649,8 @@ Init_Hash(void)
rb_define_method(rb_cHash,"compare_by_identity?", rb_hash_compare_by_id_p, 0);
+ rb_define_method(rb_cHash,"fix!", rb_hash_fix, 0);
+ rb_define_method(rb_cHash,"unfix!", rb_hash_unfix, 0);
+ rb_define_method(rb_cHash,"fixed?", rb_hash_fixed_p, 0);
+
#ifndef __MACOS__ /* environment variables nothing on MacOS. */
origenviron = environ;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦