# PP

## super class

PrettyPrint

## class methods

`PP.pp(obj[, out[, width]])`

  obj を out に幅 width で pretty print します。

  out を省略した場合は、`$>` が指定されたものとみなされます。 width を省略した場合は、79 が指定されたものとみなされます。

  PP.pp は out を返します。

`PP.sharing_detection`

  共有検出フラグを boolean すなわち true か false で返します。 デフォルトは false です。

`PP.sharing_detection = boolean_value`

  共有検出フラグを設定します。

## methods

`pp(obj)`

  Object#pretty_print や Object#pretty_print_cycle を使って、 obj を pretty print バッファに追加します。

  obj がすでに出力されていたときには Object#pretty_print_cycle が使われます。これはオブジェクトの参照の連鎖がループしていることを 意味します。

`object_group(obj) { ... }`

  以下と等価な働きをするもので簡便のために用意されています。

      group(1, '#<' + obj.class.name, '>') { ... }

`comma_breakable`

  以下と等価な働きをするもので簡便のために用意されています。

      text ','
      breakable

# Object

`pretty_print(pp)`

  一般のオブジェクトのためのデフォルトの pretty print メソッドです。 このメソッドはインスタンス変数を列挙するために `pretty_print_instance_variables` を呼びます。

  カスタマイズ(再定義)された `inspect` を `self` が持つ場合、 `self.inspect` の結果が使われますが、これは改行のヒントを持ちません。

  もっともよく使われるいくつかの組み込みクラスについて、 PP モジュールはあらかじめ定義された pretty_print() メソッドを 簡便のために提供しています。

`pretty_print_cycle(pp)`

  一般のオブジェクトがサイクルの一部であることが検出されたときのための デフォルトの pretty print メソッドです。

`pretty_print_instance_variables`

  ソートされたインスタンス変数の名前の配列を返します。

  このメソッドはインスタンス変数の名前をシンボルか文字列として要素に持つ 配列を返さなければなりません。 `[:@a, :@b]`.

link: [PrettyPrint]
reverse link: [pp.rb]