ansiエスケープシーケンスを含む文字列がある場合、それらを端末に出力すると、カーソルが移動できるため、次のようになります。
puts "xxx\nxxx\nxxx\n\e[2Fbe\e[2E"
# terminal sees
xxx
bex
xxx
##
# breakdown of "xxx\nxxx\nxxx\n\e[2Fbe\e[2E"
# 1st, the "xxx\nxxx\nxxx\n" is printed
xxx
xxx
xxx
*
# then with `\e[2F` the cursor is moved up 2 lines
xxx
*xx
# then `be` is printed
xxx
bex
# then the cursor is returned to the bottom with `\e[2F`
xxx
bex
xxx
*
この最終出力として文字列をエンコードするメソッドを作成するにはどうすればよいですか。このメソッドは、エスケープ シーケンスを削除するだけでなく、より洗練されたものにする必要があります。実際には、最終的な文字列に影響を与える必要があるからです。
言い換えれば、some_magic
任意の入力文字列に対してこの種の出力を得るには、どうすればよいのでしょうか。
x = my_method(""xxx\nxxx\nxxx\n\e[2Fbe\e[2E"")
#=> "xxx\nbex\nxxx"