Looks good.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dave Remy
Sent: Monday, July 07, 2008 5:29 PM
To: IronRuby External Code Reviewers
Cc: [email protected]
Subject: [Ironruby-core] Code Review: StringGsubEach
tfpt review "/shelveset:StringGsubEach;REDMOND\dremy"
Comment :
Changes to for string.gsub and string.each (and each_line) to run clean. The
most significant change is to track version in MutableString. This version is
bumped on any mutation and functions that iterate (each, each_line, gsub) check
the version before and after to assure there has been no version change during
the iteration. After these changes all gsub, each, and each_line specs run
clean (no excludes). Note that although the specs run clean the each behavior
does not match MRI. The spec test contains a new line in the iterating string
("hello\nworld") and MRI does throw a runtime exception if this string is
iterated. However if there is no new line in the string MRI does not throw an
exception if the underlying string is mutated. This seems inconsistent but
worth noting.
String#gsub with pattern and block sets $~ for access from the block
String#gsub with pattern and block restores $~ after leaving the block
String#gsub with pattern and block sets $~ to MatchData of last match and nil
when there's none for access from outside
String#gsub with pattern and block raises a RuntimeError if the string is
modified while substituting
String#each raises a RuntimeError if the string is modified while substituting
String#each_line raises a RuntimeError if the string is modified while
substituting
_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core