Я программирую скрипт, который представляет какой-то вывод пользователю.Я бы хотел, чтобы вывод был цветным, но также имел возможность отключить его.
Пример
$ ./run_script
Some output. <-- pretend this text is in blue
$ ./run_script --no-color
Some output <-- no color
В настоящее время я начал программировать с цветным рубиновым гемомпоэтому я делаю что-то вроде этого:
puts "Some output".blue
Но теперь я начинаю понимать, что это плохой подход, поскольку мне нужна какая-то функциональность для отключения цвета.
Я предполагаю, что для решения этой проблемы будет шаблон делегирования , где я мог бы передать текст в виде хеша {:text => "Some output", :color => "blue"}
классу Outputter
, который просто маскирует либо ColorOutputter
класс или NoColorOutputter
класс.Тем не менее, я не совсем уверен, поскольку создание трех новых классов для чего-то относительно тривиального кажется почти бесполезным.У кого-нибудь есть лучший подход к решению этой проблемы?