a=['']+[*$<]+['']
($.+1).times do |i|
j = 0
s=a[i][0]==?. ? '|' : ' '
while a[i+1][j] || a[i][j] do
b = ' '
b[0]= ?_ if a[i][j]==?. || a[i+1][j]==?.
b[1]= ?| if a[i][j]==?. || a[i][j+1]==?.
s += b
j += 1
end
puts s.rstrip
end
Note that non-ascii characters in the above source code will be escaped (such as \x9f).