From 19dee8af57634c5813286ffbb63cc82611748378 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 4 Oct 2007 06:57:19 +0000 Subject: [PATCH] * encoding.c (rb_obj_encoding): returns encoding of the given object. * re.c (Init_Regexp): new method Regexp#encoding. * string.c (str_encoding): moved to encoding.c git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13613 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ encoding.c | 14 ++++++++++++++ include/ruby/encoding.h | 1 + re.c | 1 + string.c | 18 ++---------------- 5 files changed, 26 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 413c7b62ef..f87ce9e81c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Thu Oct 4 15:57:16 2007 Nobuyoshi Nakada + + * encoding.c (rb_obj_encoding): returns encoding of the given object. + + * re.c (Init_Regexp): new method Regexp#encoding. + + * string.c (str_encoding): moved to encoding.c + Thu Oct 4 15:49:33 2007 Yukihiro Matsumoto * array.c (rb_ary_permutation): remove C99 dependency. diff --git a/encoding.c b/encoding.c index 6f7b406c88..70309f4f6f 100644 --- a/encoding.c +++ b/encoding.c @@ -259,6 +259,20 @@ rb_enc_copy(VALUE obj1, VALUE obj2) } +/* + * call-seq: + * obj.encoding => str + * + * Retruns the encoding name. + */ + +VALUE +rb_obj_encoding(VALUE obj) +{ + return rb_str_new2(rb_enc_name(rb_enc_get(obj))); +} + + char* rb_enc_nth(const char *p, const char *e, int nth, rb_encoding *enc) { diff --git a/include/ruby/encoding.h b/include/ruby/encoding.h index 36cf110cdb..715c6f6d2c 100644 --- a/include/ruby/encoding.h +++ b/include/ruby/encoding.h @@ -50,6 +50,7 @@ void rb_enc_copy(VALUE, VALUE); VALUE rb_enc_str_new(const char*, long len, rb_encoding*); long rb_enc_strlen(const char*, const char*, rb_encoding*); char* rb_enc_nth(const char*, const char*, int, rb_encoding*); +VALUE rb_obj_encoding(VALUE); /* index -> rb_encoding */ rb_encoding* rb_enc_from_index(int idx); diff --git a/re.c b/re.c index b1c5fb93f1..0e7c962293 100644 --- a/re.c +++ b/re.c @@ -2476,6 +2476,7 @@ Init_Regexp(void) rb_define_method(rb_cRegexp, "casefold?", rb_reg_casefold_p, 0); rb_define_method(rb_cRegexp, "options", rb_reg_options_m, 0); rb_define_method(rb_cRegexp, "kcode", rb_reg_kcode_m, 0); + rb_define_method(rb_cRegexp, "encoding", rb_obj_encoding, 0); /* in encoding.c */ rb_define_const(rb_cRegexp, "IGNORECASE", INT2FIX(ONIG_OPTION_IGNORECASE)); rb_define_const(rb_cRegexp, "EXTENDED", INT2FIX(ONIG_OPTION_EXTEND)); diff --git a/string.c b/string.c index 5fbc4e7133..67495e511c 100644 --- a/string.c +++ b/string.c @@ -5106,20 +5106,6 @@ rb_str_setter(VALUE val, ID id, VALUE *var) } -/* - * call-seq: - * str.encoding => str - * - * Retruns the encoding name. - */ - -static VALUE -str_encoding(VALUE str) -{ - return rb_str_new2(rb_enc_name(rb_enc_get(str))); -} - - /* * call-seq: * str.force_encoding(encoding) => str @@ -5388,7 +5374,7 @@ sym_swapcase(VALUE sym) static VALUE sym_encoding(VALUE sym) { - return str_encoding(rb_id2str(SYM2ID(sym))); + return rb_obj_encoding(rb_id2str(SYM2ID(sym))); } ID @@ -5545,7 +5531,7 @@ Init_String(void) rb_define_method(rb_cString, "partition", rb_str_partition, 1); rb_define_method(rb_cString, "rpartition", rb_str_rpartition, 1); - rb_define_method(rb_cString, "encoding", str_encoding, 0); + 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); id_to_s = rb_intern("to_s");