管道传输到“head”时,ANSI转义码彩色内容被错误地截断

时间:2017-11-09 02:49:54

标签: crystal-lang

给出以下文件:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>



<table id="tableAudience1" > </table>
<div onclick="openFolder(event,this)"> First Table </div>

<br/>  

<table id="tableAudience2" > </table>
<div onclick="openFolder(event,this)"> Second Table </div>


<br/> 

<table id="tableAudience3" > </table>
<div onclick="openFolder(event,this)"> Third Table </div>

<br/> 

<table id="tableAudience4" > </table>
<div onclick="openFolder(event,this)"> Fourth Table </div>

当我运行它然后将它传递到RED = "\e[0;31m" RESET = "\e[0m" content = [ "01 foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux", "02 foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux", "03 foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux", "04 foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux", "05 foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux foo bar baz qux", ].join("\n") puts content.chars.map { |c| [RED, c, RESET].join }.join 时,输出会通过第2行部分截断。相同的代码使用Ruby工作正常。

示例:

head

我怎样才能让它像Ruby版本一样?我不确定这是否是Crystal中的错误,或者是否有其他方式我应该输出到STDOUT。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

此问题已在Crystal 0.25.0和更高版本中修复,请参见https://github.com/crystal-lang/crystal/issues/2713进行详细讨论。

我还在0.25.1上运行了该示例,它运行正常。