Ruby の文字列で ANSI エスケープ コード (エスケープ シーケンス) を選択するための正規表現を知っていますか? 私はこれについて話している:
http://ascii-table.com/ansi-escape-sequences.php
そして、よくテストされ、信頼できるものを探しています。
Ruby の文字列で ANSI エスケープ コード (エスケープ シーケンス) を選択するための正規表現を知っていますか? 私はこれについて話している:
http://ascii-table.com/ansi-escape-sequences.php
そして、よくテストされ、信頼できるものを探しています。
他のコードに基づいたコードがあります。かなり前のことで、ソースは忘れましたが、これかもしれません。以下は、色付きの ANSI テキストをタグ付き HTML 形式に変換するために使用するコードです。
require "strscan"
class String
def ansi2html
ansi = StringScanner.new(self)
html = StringIO.new
until ansi.eos?
if ansi.scan(/\e\[0?m/)
html.print(%{</span>})
elsif ansi.scan(/\e\[0?(\d+)m/)
html.print(%{<span class="#{AnsiColor[ansi[1]]}">})
else
html.print(ansi.scan(/./m))
end
end
html.string
end
end
これは、マッピング ルールを定義するハッシュと一緒に使用されます。
class String
AnsiColor = {
"1" => "bold",
"4" => "underline",
"30" => "black",
"31" => "red",
"32" => "green",
"33" => "yellow",
"34" => "blue",
"35" => "magenta",
"36" => "cyan",
"37" => "white",
"40" => "bg-black",
"41" => "bg-red",
"42" => "bg-green",
"43" => "bg-yellow",
"44" => "bg-blue",
"45" => "bg-magenta",
"46" => "bg-cyan",
"47" => "bg-white",
}
end
私はこのように使用します:
"red \x1b[31mapple\x1b[0m".ansi2html
# => "red <span class=\"red\">apple</span>"
必要に応じて変更してください。