代码之家  ›  专栏  ›  技术社区  ›  FooF

IEx.Helper.h在输出到非TTY对象时的终端友好输出

  •  0
  • FooF  · 技术社区  · 6 年前

    Elixir Forum 在本文中,我创建了一个shell脚本,通过运行 IEx.Helpers.h :

    elixir -e "require IEx.Helpers; IEx.Helpers.h($1)"
    

    (其中 $1 是脚本的命令行参数)(例如,命令

    elixir -e "require IEx.Helpers; IEx.Helpers.h(List)"
    

    提供模块的文档 List

    这真是太好了。不用跑了 iex 查看文档。终端的默认格式工作得又好又漂亮。但是如果我将输出通过管道传输到寻呼机(或者更一般地说,如果输出不是TTY设备),格式会发生变化-没有ANSI颜色的纯ASCII输出。

    问题:如何配置或定向 IEx.Helper.h 在非TTY情况下提供相同的输出?

    (好像有功能 IEx.configure 可以用来更改格式,但我看不到任何关于非TTY输出的内容。另一种方法是使用一些合适的微型外部程序来创建一个伪TTY,重定向 stdout 在运行 elixir 命令。。。但我更愿意从长生不老药的角度来解决输出问题。)

    1 回复  |  直到 6 年前
        1
  •  2
  •   Aleksei Matiushkin    6 年前

    不管愚弄者使用什么输出设备,都可能强制使用颜色 IEx.Config.colors_enabled?/1 不要用复杂的支票 IO.ANSI.enabled?/0 :

    elixir -e "
      Application.put_env(:iex, :colors, [enabled: true]);
      require IEx.Helpers;
      IEx.Helpers.h(List)"