[macruby-changes] [224] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Mon May 26 21:33:26 PDT 2008


Revision: 224
          http://trac.macosforge.org/projects/ruby/changeset/224
Author:   lsansonetti at apple.com
Date:     2008-05-26 21:33:25 -0700 (Mon, 26 May 2008)

Log Message:
-----------
fixed default behavior of String#split with no argument (nil spat and awk mode)

Modified Paths:
--------------
    MacRuby/trunk/string.c
    MacRuby/trunk/test/ruby/test_string.rb

Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c	2008-05-27 03:52:39 UTC (rev 223)
+++ MacRuby/trunk/string.c	2008-05-27 04:33:25 UTC (rev 224)
@@ -6279,18 +6279,30 @@
 #if WITH_OBJC
     if (awk_split || spat_string) {
 	CFRange search_range;
+	CFCharacterSetRef charset;
 	if (spat == Qnil)
-	    spat = (VALUE)CFSTR(" ");
+	    charset = CFCharacterSetGetPredefined(
+		kCFCharacterSetWhitespaceAndNewline);
 	search_range = CFRangeMake(0, clen);
 	do {
 	    CFRange result_range;
 	    CFRange substr_range;
-	    if (!CFStringFindWithOptions((CFStringRef)str, 
-			(CFStringRef)spat,
-			search_range,
-			0,
-			&result_range))
-		break;
+	    if (spat != Qnil) {
+		if (!CFStringFindWithOptions((CFStringRef)str, 
+		    (CFStringRef)spat,
+		    search_range,
+		    0,
+		    &result_range))
+		    break;
+	    }
+	    else {
+		if (!CFStringFindCharacterFromSet((CFStringRef)str,
+		    charset, 
+		    search_range,
+		    0,
+		    &result_range))
+		    break;
+	    }
 
 	    substr_range.location = search_range.location;
 	    substr_range.length = result_range.location 

Modified: MacRuby/trunk/test/ruby/test_string.rb
===================================================================
--- MacRuby/trunk/test/ruby/test_string.rb	2008-05-27 03:52:39 UTC (rev 223)
+++ MacRuby/trunk/test/ruby/test_string.rb	2008-05-27 04:33:25 UTC (rev 224)
@@ -1067,6 +1067,7 @@
 
     assert_equal([], "".split(//, 1))
     assert_equal(["\0"], "\0".split(//))
+    assert_equal(["*.c", "lib", "ext"], "\n\n\n\n\n\n*.c\n\n\n\nlib\n\n\n\n\next\n".split)
   end
 
   def test_squeeze

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080526/e7c3bd5d/attachment.htm 


More information about the macruby-changes mailing list