aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--string.c9
2 files changed, 13 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ed05028907..01611d97fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Fri Dec 21 12:16:50 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_is_ascii_only_p): new method ascii_only?.
+
Fri Dec 21 12:00:34 2007 Tanaka Akira <akr@fsij.org>
* configure.in: check langinfo.h and locale.h.
diff --git a/string.c b/string.c
index 2d25868543..6e998ee17a 100644
--- a/string.c
+++ b/string.c
@@ -5341,6 +5341,14 @@ rb_str_valid_encoding_p(VALUE str)
return cr == ENC_CODERANGE_BROKEN ? Qfalse : Qtrue;
}
+static VALUE
+rb_str_is_ascii_only_p(VALUE str)
+{
+ int cr = rb_enc_str_coderange(str);
+
+ return cr == ENC_CODERANGE_7BIT ? Qtrue : Qfalse;
+}
+
/**********************************************************************
* Document-class: Symbol
*
@@ -5754,6 +5762,7 @@ Init_String(void)
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, "ascii_only?", rb_str_is_ascii_only_p, 0);
id_to_s = rb_intern("to_s");