Удобный для терминала вывод для IEx.Helper.h при выводе на что-то не TTY - PullRequest
0 голосов
/ 05 октября 2018

После этой записи Elixir Forum я создал сценарий оболочки для просмотра документации Elixir, запустив 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), форматирование изменится - обычный вывод ASCII без цветов ANSI.

Вопрос: как настроить или направить IEx.Helper.h чтобы обеспечить идентичный вывод в случае без TTY?

(Похоже, есть функция IEx.configure, которую можно использовать для изменения форматирования, но я ничего не видел о выводе без TTY. Другойможно было бы использовать какую-нибудь подходящую миниатюрную внешнюю программу для создания псевдо-TTY, перенаправив stdout на нее перед запуском команды elixir ... но я бы предпочел решить проблему вывода со стороны Elixir.)

1 Ответ

0 голосов
/ 08 октября 2018

Можно применять цвета независимо от того, какое устройство вывода используется, обманывая 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)"
...