merge revision(s) 22988:

* lib/pathname.rb (Pathname#sub): set $~ in block.binding.
	  [ruby-dev:38173]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@23920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shyouhei 2009-07-01 06:48:23 +00:00
parent fec18c0bc2
commit 30b0fe4cc2
4 changed files with 35 additions and 6 deletions

View file

@ -251,7 +251,21 @@ class Pathname
# Return a pathname which is substituted by String#sub.
def sub(pattern, *rest, &block)
self.class.new(@path.sub(pattern, *rest, &block))
if block
path = @path.sub(pattern, *rest) {|*args|
begin
old = Thread.current[:pathname_sub_matchdata]
Thread.current[:pathname_sub_matchdata] = $~
eval("$~ = Thread.current[:pathname_sub_matchdata]", block.binding)
ensure
Thread.current[:pathname_sub_matchdata] = old
end
yield *args
}
else
path = @path.sub(pattern, *rest)
end
self.class.new(path)
end
if File::ALT_SEPARATOR