From: Fujioka Date: 2009-07-28T00:07:27+09:00 Subject: [ruby-dev:38913] Re: String#valid_encoding?にオプションが欲しい xibbarこと藤岡です。(なぜか届かないので再送です) 自信がないけどパッチです。 Fujioka wrote:: > xibbarこと藤岡です。(なぜか届かないので再送します) > > String#valid_encoding?に > チェックしたいencodingをオプションで渡せるようになると便利です。 > Index: string.c =================================================================== --- string.c (revision 24163) +++ string.c (working copy) @@ -7081,8 +7081,13 @@ */ static VALUE -rb_str_valid_encoding_p(VALUE str) +rb_str_valid_encoding_p(int argc, VALUE *argv, VALUE str) { + if(argc==1){ + str=rb_enc_str_new(RSTRING_PTR(str), strlen(RSTRING_PTR(str)),rb_to_encoding(argv[0])); + } else if(argc > 1){ + rb_raise(rb_eArgError, "wrong number of arguments (%d for 0..1)", argc); + } int cr = rb_enc_str_coderange(str); return cr == ENC_CODERANGE_BROKEN ? Qfalse : Qtrue; @@ -7530,7 +7535,7 @@ 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, "valid_encoding?", rb_str_valid_encoding_p, -1); rb_define_method(rb_cString, "ascii_only?", rb_str_is_ascii_only_p, 0); id_to_s = rb_intern("to_s");