[macruby-changes] [245] MacRuby/trunk/string.c
source_changes at macosforge.org
source_changes at macosforge.org
Mon Jun 2 18:06:17 PDT 2008
Revision: 245
http://trac.macosforge.org/projects/ruby/changeset/245
Author: lsansonetti at apple.com
Date: 2008-06-02 18:06:16 -0700 (Mon, 02 Jun 2008)
Log Message:
-----------
introduce String#transform, to apply ICU transformations to a given string
Modified Paths:
--------------
MacRuby/trunk/string.c
Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c 2008-06-02 23:49:01 UTC (rev 244)
+++ MacRuby/trunk/string.c 2008-06-03 01:06:16 UTC (rev 245)
@@ -8079,6 +8079,37 @@
#endif
}
+#if WITH_OBJC
+static VALUE
+rb_str_transform_bang(VALUE str, VALUE transform_name)
+{
+ CFRange range;
+
+ rb_str_modify(str);
+ StringValue(transform_name);
+
+ range = CFRangeMake(0, RSTRING_CLEN(str));
+
+ if (!CFStringTransform((CFMutableStringRef)str,
+ &range,
+ (CFStringRef)transform_name,
+ false))
+ rb_raise(rb_eRuntimeError, "cannot apply transformation `%s' to `%s'",
+ RSTRING_CPTR(transform_name), RSTRING_CPTR(str));
+
+ return range.length == kCFNotFound ? Qnil : str;
+}
+
+static VALUE
+rb_str_transform(VALUE str, VALUE transform_name)
+{
+ str = rb_str_dup(str);
+ rb_str_transform_bang(str, transform_name);
+ return str;
+}
+
+#endif
+
/**********************************************************************
* Document-class: Symbol
*
@@ -8630,6 +8661,11 @@
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);
+#if WITH_OBJC
+ rb_define_method(rb_cString, "transform", rb_str_transform, 1);
+ rb_define_method(rb_cString, "transform!", rb_str_transform_bang, 1);
+#endif
+
id_to_s = rb_intern("to_s");
rb_fs = Qnil;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080602/b944b5f0/attachment-0001.htm
More information about the macruby-changes
mailing list