山本です。
> 2. _((hoge)) が残っている
これを解消するスクリプトを作りましたので、近いうちにコミットしようと
思います。([ruby-dev:27042] が修正された後くらいに)
def convert(path)
changed = false
require "stringio"
buffer = StringIO.new
IO.foreach(path) do |s|
while i = s.index(/\s+_+\(\(/)
i2 = j2 = i + $&.size
nest = 0
while j2 = s.index(/[()]/, j2)
raise "nest error" if nest < 0
if $& == ")" && nest == 0 # should be end of _((hoge))
raise "bracket error" unless s[j2+1] == ?)
j = j2 + 2
s[i...j] = "(" + s[i2...j2] + ")"
changed = true
break
elsif $& == ")" # nested bracket
nest -= 1
j2 += 1
elsif $& == "(" # nested bracket
nest += 1
j2 += 1
end
end
i = j
end
buffer << s
end
if changed
open(path, "w") do |io|
io.write(buffer.string)
end
end
end
#########################
# main
Dir.glob("*.[hc]") do |path|
convert(path)
end