aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-04 06:57:19 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-04 06:57:19 +0000
commit19dee8af57634c5813286ffbb63cc82611748378 (patch)
tree0683f9609b4761db95c734f093f55459778cd1d1
parent612b2ed6a751629b2809e58a8f42a56e8690e8c7 (diff)
downloadruby-19dee8af57634c5813286ffbb63cc82611748378.tar.gz
* 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
-rw-r--r--ChangeLog8
-rw-r--r--encoding.c14
-rw-r--r--include/ruby/encoding.h1
-rw-r--r--re.c1
-rw-r--r--string.c18
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 <nobu@ruby-lang.org>
+
+ * 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 <matz@ruby-lang.org>
* 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
@@ -5108,20 +5108,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
*
* Changes the encoding to +encoding+ and returns self.
@@ -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");