[#38725] [Bug #1720] [NaN] == [NaN] が true になる — tadayoshi funaba <redmine@...>
Bug #1720: [NaN] == [NaN] が true になる
[#38731] FreeBSD で ruby-mecab のライブラリ参照の不具合 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
きしもとです
[#38762] Re: [ruby-cvs:31110] Ruby:r23892 (trunk): * rational.c (float_to_r): always returns rational. — "Yugui (Yuki Sonoda)" <yugui@...>
On 6/29/09 8:31 PM, tadf@ruby-lang.org wrote:
[#38782] [Bug:trunk] Re: [ruby-cvs:31281] Ruby:r24063 (trunk): * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries. — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
永井@知能.九工大です.
こんにちは、なかむら(う)です。
永井@知能.九工大です.
こんにちは、なかむら(う)です。
永井@知能.九工大です.
こんにちは、なかむら(う)です。
永井@知能.九工大です.
永井@知能.九工大です.
こんにちは、なかむら(う)です。
押田です。
[#38821] セキュリティモデルのドキュメント — Shugo Maeda <shugo@...>
前田です。
[#38836] ext/tk/extconf.rb creates a file in $srcdir — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#38843] 複素数リテラルについて — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
> * 互換性はどうか。大丈夫のはずだが、見落としは
遠藤です。
> は十分検討されたのでしょうか。積極的に反対なわけではないですが、
遠藤です。
> 読み書きがやさしいのはわかるんですが、1+2i が書けても 1+ni が書けない
[#38850] Rational#hash — Tadayoshi Funaba <tadf@...>
いつだったか、rational などの hash が変ったようですが、意味が解っていな
[#38900] rb_eval_string_protect and encoding — Masaki Suketa <masaki.suketa@...>
助田です。
なかだです。
助田です。
[#38912] String#valid_encoding?にオプションが欲しい — Fujioka <fuj@...>
xibbarこと藤岡です。(なぜか届かないので再送します)
成瀬です。
xibbarです。
xibbarです。
まつもと ゆきひろです
成瀬です。
まつもと ゆきひろです
[#38924] thread switch hook for RubyCocoa — Nobuyoshi Nakada <nobu@...>
なかだです。
木村わ@RubyCocoaチーム/MacPorts port:rubyメンテナです。
木村わ@RubyCocoaです。
[#38932] Enumerator#peek — Tanaka Akira <akr@...>
Enumerator#peek を新設するのはどうでしょうか。
けいじゅ@いしつかです.
In article <E1MVnmx-00046e-PP@keiju.ishitsuka.com>,
けいじゅ@いしつかです.
In article <E1MW8kB-0001fM-56@keiju.ishitsuka.com>,
[#38938] Re: [ruby-list:46234] Re: irbでの式展開中の動作について — keiju@... (石塚圭樹)
けいじゅ@いしつかです.
[#38971] [Bug #1848] Net::SSH hangs — Shyouhei Urabe <redmine@...>
Bug #1848: Net::SSH hangs
チケット #1848 が更新されました。 (by Shyouhei Urabe)
Shyouhei Urabe さんは書きました:
[ruby-dev:38957] Re: String#valid_encoding?にオプションが欲しい
xibbarこと藤岡です。
>> force_encodingにかんしては破壊的なイメージがあるんですよねえ。
>> 勝手な思いこみか、forceという単語の持つ印象か。
>>
>> |あとはpresume_encoding!とかありますけれども……。
>>
>> presume_encodingも用意するのであれば。
>>
> ということは、
> presume_encoding(encoding)
> presume_encoding!(encoding)
> の2つを新設すると折り合いがつくということでしょうか?
>
実装してみました。
irb(main):001:0> str="あ".force_encoding("EUC-JP")
=> "\xE3\x81\x82"
irb(main):004:0> str.presume_encoding("EUC-JP")
=> nil
irb(main):005:0> str.presume_encoding("UTF-8")
=> "あ"
irb(main):007:0> str
=> "\xE3\x81\x82"
irb(main):008:0> str.presume_encoding!("UTF-8")
=> "あ"
irb(main):009:0> str
=> "あ"
irb(main):010:0> str="あ".force_encoding("EUC-JP")
=> "\xE3\x81\x82"
irb(main):011:0> str.presume_encoding!("SHIFT_JIS")
=> nil
irb(main):012:0> str
=> "\xE3\x81\x82"
irb(main):013:0> str.presume_encoding!("EUC-JP")
=> nil
irb(main):014:0> str
=> "\xE3\x81\x82"
以下パッチ。
Index: string.c
===================================================================
--- string.c (revision 24163)
+++ string.c (working copy)
@@ -7090,6 +7090,51 @@
/*
* call-seq:
+ * str.presume_encoding(encoding) => new_str or nil
+ *
+ * If a string can be encoded correctly in the given encoding,
+ * returns a copy of str with changing the encoding to +encoding+ ;
+ * otherwise, returns nil.
+ */
+
+static VALUE
+rb_str_presume_encoding(VALUE str, VALUE encoding)
+{
+ rb_encoding *enc = rb_to_encoding(encoding);
+ int cr = coderange_scan(RSTRING_PTR(str), RSTRING_LEN(str), enc);
+
+ if (cr != ENC_CODERANGE_BROKEN) {
+ return
rb_enc_str_new(RSTRING_PTR(str),strlen(RSTRING_PTR(str)),enc);
+ } else {
+ return Qnil;
+ }
+}
+
+/*
+ * call-seq:
+ * str.presume_encoding_bang(encoding) => str or nil
+ *
+ * If a string can be encoded correctly in the given encoding,
+ * changes the encoding to +encoding+ and returns self;
+ * otherwise, returns nil.
+ */
+
+static VALUE
+rb_str_presume_encoding_bang(VALUE str, VALUE encoding)
+{
+ rb_encoding *enc = rb_to_encoding(encoding);
+ int cr = coderange_scan(RSTRING_PTR(str), RSTRING_LEN(str), enc);
+
+ if (cr != ENC_CODERANGE_BROKEN) {
+ ENCODING_CODERANGE_SET(str, rb_enc_to_index(enc), cr);
+ return str;
+ } else {
+ return Qnil;
+ }
+}
+
+/*
+ * call-seq:
* str.ascii_only? => true or false
*
* Returns true for a string which has only ASCII characters.
@@ -7531,6 +7576,8 @@
rb_define_method(rb_cString, "encoding", rb_obj_encoding, 0); /* in
encoding.c */
rb_define_method(rb_cString, "force_encoding",
rb_str_force_encoding, 1);
rb_define_method(rb_cString, "valid_encoding?",
rb_str_valid_encoding_p, 0);
+ rb_define_method(rb_cString, "presume_encoding",
rb_str_presume_encoding, 1);
+ rb_define_method(rb_cString, "presume_encoding!",
rb_str_presume_encoding_bang, 1);
rb_define_method(rb_cString, "ascii_only?", rb_str_is_ascii_only_p, 0);
id_to_s = rb_intern("to_s");