web-dev-qa-db-ja.com

カラー出力をHTMLに変換する

色付きの出力を提供するツールがあります。

dwdiff -c File1 File2 # Word level diff
grep --color=always # we all know this guy
...

問題は次のとおりです:任意のプログラムのカラー出力をカラーhtmlファイルに変換する方法

他の出力形式も適しているかもしれません(LaTeXは素晴らしいでしょう)。 HTMLは他の形式に変換するのが簡単なので、良い出発点だと思います。

(端末のカラーコードを保持する方法については、回答に従ってください: https://unix.stackexchange.com/a/10832/9689... | unbuffer command_with_colours arg1 arg2 | ...-ツール nbufferexpect の一部です)

62

この質問 への答えは、おそらくあなたが望むものです。

それはあなたが探している変換を行うこれらのツールにリンクしています:

41
user17591
20
Dreampuf

AnsiEsc.vim プラグインを使用してvimを試し、エスケープコードを介してANSIカラーを表示してから、標準出力にvim -にリダイレクトできます(:syntax on)。次に、vimコマンドでファイルをHTMLに変換します::TOhtml。生成されたHTMLファイルは、カラー出力されているはずです。


ソースコードを非インタラクティブにhtmlに変換するには、次のコマンドを試してください:

vim -E -s -c "let g:html_no_progress=1" -c "syntax on" -c "set ft=c" -c "runtime syntax/2html.vim" -cwqa myfile.c

出典::help g:html_no_progress:help TOhtmlの一部)。

注:-の代わりにmyfile.cを使用して、コードを標準入力から変換できます。

6
kenorb

Vimを使用できます。これは、diff出力をHTMLに変換するために使用するスクリプトの一部です。

vim -n \
    -c ':%s%^+  %+++    ' \
    -c ':%s%^-  %---    ' \
    -c ':%s%^   %       ' \
    -c ':set nu' \
    -c ':let html_use_css=1' \
    -c ':so $VIMRUNTIME/syntax/2html.vim' \
    -c ':wq' -c ':qa!' $input > /dev/null 2> /dev/null

この後、sedを実行してCSSとタイトルを変更し、希望どおりの名前に変更します。

*編集:色を取得するには、構文の強調表示をオンにする必要があることを述べました。私はそれを私の.vimrcで行いますが、ここに追加したい場合は、次のような別の行になります

-c ':syntax on' \
4
user17591

ansi2html 、pypi.

通常のシェル出力を lolcat を介してansi2htmlを介してパイプすることで、適度な楽しさを得ることができます。何かのようなもの:

… | lolcat -f | ansi2html -ip
4
scruss

パイプで連結された出力が色を持たないことを前提に記述されたコマンド(一部のテストフレームワークなど)を使用している場合は、スクリプトユーティリティを使用して最初にansi出力を保存すると便利です。次に、これをahaまたは前述のその他のユーティリティにプッシュできます。

1
Andrew Stretton

pdate:module HTML :: FromANSI from CPAN ..を使用してPerlメソッドを追加しました。インストールするには、ディレクトリに抽出するだけです。そして、そのディレクトリからroot:Perl -MCPAN -e 'install HTML::FromANSI'として実行します。あなたの要求に合う特定の機能は、ansi2htmlと呼ばれるスクリプトです。興味深いことに、ファイル名にkを重ねた後もelisp-Shellスクリプトと同じように色が失われています...使用例は次のとおりです。

ls -l --color=always /bin/*k* | 
 grep --color=always "k\|x\|2010" |
  ansi2html  >/tmp/example.html
firefox /tmp/example.html

これはhtml出力です。 Firefoxで見られるように:

enter image description here


emacselisp-Shell script ...を使用したメソッドの例を次に示しますhtmlizeと呼ばれます... Emacsはランニング。

もともとは黒い背景でテストしましたが、何らかの理由で、白い背景はERASE_LINEと思われる導入済みのエスケープコード\e[Kの1つではうまく機能しないことに気付きました(Erase端末出力の現在の行)。このエスケープコードを削除する行を追加しました。白い背景で動作するようになりました。

次の例は、lsからの色強調表示の出力をgrepにパイプして、さらに色を強調表示しています。

ls -l --color=always /bin/*k* | 
 grep --color=always "k\|x\|2010" >/tmp/example
htmlize /tmp/example
firefox /tmp/example.html

これはelsip-Shellスクリプトです。

#!/bin/sh
":"; exec /usr/bin/emacs -Q --script "$0" -- "$@" # -*-emacs-LISP-*-
(require 'ansi-color) (require 'htmlize)
(find-file (setq path-in (cadr argv)))
(ansi-color-apply-on-region (point-min) (point-max))
(switch-to-buffer (buffer-name (htmlize-buffer)))
(write-file (concat path-in ".html"))

以下は、Firefoxでのhtml出力のサンプルです...時間がある場合は、オーバーレイするANSIコードの問題を詳しく調べます。赤のksが緑のファイル名と重なっていますが、grepのテスト正規表現を急いで選択したためです(おそらく\e[Kが影響しています...

enter image description here

1
Peter.O

これは@ user17591ソリューションのフォローアップです-vimスクリプト

#!/usr/bin/vim -ns
:%s%^+  %+++
:%s%^-  %---
:%s%^   %
:set nu
:let html_use_css=1
:so $VIMRUNTIME/syntax/2html.vim
:wq
:qa!

それをchmodして

使用法: htmlvim file(file.htmlを生成するため)

1
JJoao