1

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"
4

0 に答える 0