要約
オブジェクトなどを見やすく出力するためのクラスです。
目次
- 特異メソッド
- インスタンスメソッド
継承しているメソッド
特異メソッド
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] $>
sharing_detection -> bool
[permalink][rdoc][edit]sharing_detection=(boolean)
-
共有検出フラグを表すアクセサです。デフォルトは false です。true である場合、 PP.pp は一度出力したオブジェクトを再び出力する時 Object#pretty_print_cycle を使います。
- [PARAM] boolean:
- 共有検出フラグを true か false で指定します。
例:
require 'pp' b = [1, 2, 3] a = [b, b] pp a #=> [[1, 2, 3], [1, 2, 3]] PP.sharing_detection = true pp a #=> [[1, 2, 3], [...]]
singleline_pp(obj, out=$>) -> object
[permalink][rdoc][edit]-
指定されたオブジェクト obj を出力先 out に出力します。ただし、インデントも改行もしません。出力先 out を返します。
- [PARAM] obj:
- 表示したいオブジェクトを指定します。
- [PARAM] out:
- 出力先を指定します。<< メソッドが定義されている必要があります。
インスタンスメソッド
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
pp(obj) -> ()
[permalink][rdoc][edit]-
指定されたオブジェクト obj を Object#pretty_print を使って自身のバッファに追加します。
obj がすでに、現在のノードの親において出力されていた場合には、参照のループが存在しているので、Object#pretty_print の代わりに Object#pretty_print_cycle が使われます。
- [PARAM] obj:
- 表示したいオブジェクトを指定します。
seplist(list, sep = lambda { comma_breakable }, iter_method = :each) {|e| ...} -> ()
[permalink][rdoc][edit]-
リストの各要素を何かで区切りつつ、自身に追加していくために使われます。
list を iter_method によってイテレートし、各要素を引数としてブロックを実行します。また、それぞれのブロックの実行の合間に sep が呼ばれます。
つまり、以下のふたつは同値です。
require 'pp' 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