Hay ansifilter
además de algunas herramientas como highlight
producirá html coloreado a partir de texto sin formato, como archivos fuente.
Ambos disponibles aquí.
Sí, debe canalizar el resultado a través de una herramienta como ansi2html.
Sin ninguna impresión bonita, lo más simple que siempre puede hacer es escapar de todo lo que necesita escapar y envolver un shell HTML básico (lo siguiente debería ser HTML5 mínimo válido). Por ejemplo, obtenga fastesc:http://raa.ruby-lang.org/project/fastesc/, y envuélvalo en un shell HTML.
Si desea conservar la magia ANSI, debe convertirlo a HTML, quizás con http://ansi-sys.rubyforge.org/
Y luego haz algo como esto, según tus necesidades:
require 'ansisys'
def ansi_escape(string)
terminal = AnsiSys::Terminal.new
terminal.echo(string)
terminal.render
end
def to_html(string)
%Q{ <!DOCTYPE html>
<title>Converted to html</title>
<pre>
#{ansi_escape(string)}
</pre>
}
end