IEx.Helper.h 的终端友好输出,同时输出到非 TTY 的内容

Terminal friendly output for IEx.Helper.h while outputting to something not TTY

在这个 Elixir Forum post 之后,我创建了一个 shell 脚本来查看 运行ning IEx.Helpers.h:

的 Elixir 文档
elixir -e "require IEx.Helpers; IEx.Helpers.h()"

(其中 </code> 是脚本的命令行参数)。 (例如,命令</p> <pre><code>elixir -e "require IEx.Helpers; IEx.Helpers.h(List)"

提供模块 List 的文档。)

这太棒了。不再需要 运行 iex 查看文档。终端的默认格式非常漂亮。但是如果我将输出通过管道传输到寻呼机(或者更一般地说,如果输出不是 TTY 设备),格式会发生变化 - 没有 ANSI 颜色的纯 ASCII 输出。

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

(看起来有函数 IEx.configure 可用于更改格式,但我看不到任何关于非 TTY 输出的信息。另一种方法是使用一些合适的小型外部程序来创建一个伪 TTY,将 stdout 重定向到 运行 之前 elixir 命令...但我更愿意从 Elixir 端解决输出问题。)

通过欺骗 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)"