要約
オブジェクトなどを見やすく出力するためのクラスです。
目次
- 特異メソッド
- インスタンスメソッド
継承しているメソッド
- PrettyPrintから継承している特異メソッド
- PrettyPrintから継承しているメソッド
特異メソッド
pp(obj, out = $>, width = 79) -> object[permalink][rdoc][edit]-
指定されたオブジェクト obj を出力先 out に幅 width で出力します。出力先 out を返します。
- [PARAM]
obj: - 表示したいオブジェクトを指定します。
- [PARAM]
out: - 出力先を指定します。<< メソッドが定義されている必要があります。
- [PARAM]
width: - 出力先の幅を指定します。
require 'pp' str = PP.pp([[:a, :b], [:a, [[:a, [:a, [:a, :b]]], [:a, :b],]]], '', 20) puts str # => # [[:a, :b], # [:a, # [[:a, # [:a, [:a, :b]]], # [:a, :b]]]][SEE_ALSO] $>
- [PARAM]
sharing_detection -> bool[permalink][rdoc][edit]sharing_detection=(boolean)-
共有検出フラグを表すアクセサです。デフォルトは false です。true である場合、 PP.pp は一度出力したオブジェクトを再び出力する時 Object#pretty_print_cycle を使います。
- [PARAM]
boolean: - 共有検出フラグを true か false で指定します。
b = [1, 2, 3] a = [b, b] pp a # => [[1, 2, 3], [1, 2, 3]] PP.sharing_detection = true pp a # => [[1, 2, 3], [...]] - [PARAM]
singleline_pp(obj, out=$>) -> object[permalink][rdoc][edit]-
指定されたオブジェクト obj を出力先 out に出力します。ただし、インデントも改行もしません。出力先 out を返します。
- [PARAM]
obj: - 表示したいオブジェクトを指定します。
- [PARAM]
out: - 出力先を指定します。<< メソッドが定義されている必要があります。
- [PARAM]
width_for(out) -> IntegerRuby 3.1 から[permalink][rdoc][edit]-
out の使用可能な幅を返します。以下の優先順で out の幅を決定します。
- out が tty デバイスに割り当てられている場合、その幅を使用します。
- そうでない場合、または幅を取得できなかった場合は、環境変数
COLUMNSに幅が設定されているとみなします。 COLUMNSが 0 でない数値に設定されていない場合は、80 を仮定します。
最後に、上記で求めた幅から 1 を引いた値を返します。この -1 は、Windows のコマンドプロンプトが最後の桁に到達すると自動的にカーソルを次の行へ移動してしまうことに対応するためのものです。
PP.pp は out に width を指定しなかった場合、この width_for の結果を使用します。
- [PARAM]
out: - 幅を調べたい出力先を指定します。
require 'pp' require 'stringio' out = StringIO.new ENV['COLUMNS'] = '100' PP.width_for(out) # => 99[SEE_ALSO] PP.pp
インスタンスメソッド
comma_breakable -> ()[permalink][rdoc][edit]-
以下と等価な働きをするもので簡便のために用意されています。
text ',' breakable[SEE_ALSO] PrettyPrint#text, PrettyPrint#breakable
object_group(obj) { ... } -> ()[permalink][rdoc][edit]-
以下と等価な働きをするもので簡便のために用意されています。
group(1, '#<' + obj.class.name, '>') { ... }- [PARAM]
obj: - 表示したいオブジェクトを指定します。
[SEE_ALSO] PrettyPrint#group
- [PARAM]
pp(obj) -> ()[permalink][rdoc][edit]-
指定されたオブジェクト obj を Object#pretty_print を使って自身のバッファに追加します。
obj がすでに、現在のノードの親において出力されていた場合には、参照のループが存在しているので、Object#pretty_print の代わりに Object#pretty_print_cycle が使われます。
- [PARAM]
obj: - 表示したいオブジェクトを指定します。
- [PARAM]
seplist(list, sep = lambda { comma_breakable }, iter_method = :each) {|e| ...} -> ()[permalink][rdoc][edit]-
リストの各要素を何かで区切りつつ、自身に追加していくために使われます。
list を iter_method によってイテレートし、各要素を引数としてブロックを実行します。また、それぞれのブロックの実行の合間に sep が呼ばれます。
つまり、以下のふたつは同値です。
q.seplist([1,2,3]) {|v| q.pp v } q.pp 1 q.comma_breakable q.pp 2 q.comma_breakable q.pp 3- [PARAM]
list: - 自身に追加したい配列を与えます。iter_method を適切に指定すれば、 Enumerable でなくても構いません。
- [PARAM]
sep: - 区切りを自身に追加するブロックを与えます。list がイテレートされないなら、 sep は決して呼ばれません。
- [PARAM]
iter_method: - list をイテレートするメソッドをシンボルで与えます。
[SEE_ALSO] PP#comma_breakable
- [PARAM]