1

この文字列を電子メール内に配置して送信できるように、awesome_print を使用して Ruby オブジェクトをきれいにしようとしています。コードに関しては(これが間違っていることはわかっています)、ここに私が達成しようとしていることがあります:

my_str = (ap error.object).to_str
# Do something with my_str, like stick it in a <pre> tag inside an html email.

出力を ap から文字列に変換するにはどうすればよいですか? 私が尋ねている理由は、気づいたように、 ap はオブジェクトのみを返すようです。

4

2 に答える 2

3

README.md には文書化されていないようですが、ライブラリがここで行うカーネルの変更を見ると: https://github.com/michaeldv/awesome_print/blob/master/lib/awesome_print/core_ext/kernel .rb

apメソッドに加えて、awesome_print ジェムもすべてのオブジェクトにメソッドを追加することがわかりますai

1.9.3p392 :001 > require 'awesome_print'
 => true 
1.9.3p392 :002 > test = {a: "b"}
 => {:a=>"b"}
1.9.3p392 :003 > ap test
{
    :a => "b"
}
1.9.3p392 :006 > test.ai
 => "{\n    :a\e[0;37m => \e[0m\e[0;33m\"b\"\e[0m\n}" 
1.9.3p392 :007 > test.ai(html:true)
 => "<pre>{\n    <pre>:a</pre><kbd style=\"color:slategray\"> =&gt; </kbd><pre><kbd style=\"color:brown\">&quot;b&quot;</kbd></pre>\n}</pre>"

とはいえ、出力の書式設定はそれほど有用ではない可能性があり (html バージョンでは大量の空白が追加され、html 以外のバージョンでは端末の奇妙な色の文字が追加されます)、文書化されていない機能であるため、警告なしにマイナーで壊れる可能性があります。バージョン更新。

kernel.rb上記で注目に値するもう 1 つの点は、apaiにエイリアスがあることです:awesome_printawesome_inspect.

于 2013-08-29T14:45:13.560 に答える
2

awesomeprint は、HTML ではなく、ASCII の色などを印刷するためのものです。私が使用するのは pygments gem です:

# gem install pygments.rb
require 'pygments'

str = <<EOT
# This is an awesome comment on my rb script
a = 2
puts a
hsh = {asdf: 1, qwer: 2, uiop: 3}
EOT

Pygments.highlight str

https://github.com/tmm1/pygments.rb

于 2013-02-26T15:54:50.203 に答える