module LolcatOutput
LolcatOutput — optional channel reply rainbow via lolcat + ANSI→IRC conversion. Public: apply Depends: AnsiToIrc, LolcatRunner, LolcatStore Tests: test/lib/lolcat_output_test.rb
Public Instance Methods
Source
# File lib/lolcat_output.rb, line 15 def apply(network:, channel:, text:, store: RabbotDb, runner: LolcatRunner, converter: AnsiToIrc) message = text.to_s return message unless network && channel return message unless store && LolcatStore.enabled?(network: network, channel: channel, store: store) argv_tokens = LolcatStore.argv(network: network, channel: channel, store: store) built = runner.build_argv(argv_tokens) argv = built[:error] ? runner.default_argv : built[:argv] lines = message.split("\n", -1) coloured = lines.map do |line| rainbow_line(line, argv: argv, runner: runner, converter: converter) end coloured.join("\n") end
Source
# File lib/lolcat_output.rb, line 31 def rainbow_line(line, argv:, runner:, converter:) plain = converter.strip_irc_codes(line) return line if plain.empty? result = runner.run(plain, argv: argv) return line if result[:error] converter.convert(result[:output].to_s.rstrip) rescue StandardError line end