#!ruby -n a=[] scan(/#{'(\w+|\(([^)]+).)/'*2}?|./){a<<($1?(m=$2||$1,$4||$3;w=m.map(&:size).max;m.map{|n|(" "*((w-n.size)/2)+n).ljust w}.insert 1,"-"*w):[" ",$&," "])} puts a.transpose.map(&:join),$/