如果我有一个包含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"