類別 PP
Ruby 物件的美化列印器。
PP
的功能¶ ↑
p
的標準輸出會傳回這個
#<PP:0x81fedf0 @genspace=#<Proc:0x81feda0>, @group_queue=#<PrettyPrint::GroupQueue:0x81fed3c @queue=[[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], []]>, @buffer=[], @newline="\n", @group_stack=[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], @buffer_width=0, @indent=0, @maxwidth=79, @output_width=2, @output=#<IO:0x8114ee4>>
美化列印的輸出會傳回這個
#<PP:0x81fedf0 @buffer=[], @buffer_width=0, @genspace=#<Proc:0x81feda0>, @group_queue= #<PrettyPrint::GroupQueue:0x81fed3c @queue= [[#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>], []]>, @group_stack= [#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>], @indent=0, @maxwidth=79, @newline="\n", @output=#<IO:0x8114ee4>, @output_width=2>
用法¶ ↑
pp(obj) #=> obj pp obj #=> obj pp(obj1, obj2, ...) #=> [obj1, obj2, ...] pp() #=> nil
以美化列印格式將 obj(s)
輸出到 $>
。
它會傳回 obj(s)
。
自訂輸出¶ ↑
若要為類別定義自訂的美化列印函式,請在類別中重新定義方法 #pretty_print(pp)
。請注意,在重新定義 #pretty_print(pp)
之前需要 require 'pp'
。
#pretty_print
會接收 pp
參數,它是 PP
類別的執行個體。此方法會使用 text
、breakable
、nest
、group
和 pp
來列印物件。
美化列印 JSON
¶ ↑
若要美化列印 JSON
,請參閱 JSON#pretty_generate
。
作者¶ ↑
Tanaka Akira <[email protected]>
常數
- VERSION
公開類別方法
pp(obj, out=$>, width=width_for(out)) 按一下以切換來源
sharing_detection() 按一下以切換來源
傳回分享偵測旗標為布林值。預設為 false (nil)。
# File lib/pp.rb, line 124 def sharing_detection Ractor.current[:pp_sharing_detection] end
sharing_detection=(b) 按一下以切換來源
將分享偵測旗標設定為 b。
# File lib/pp.rb, line 128 def sharing_detection=(b) Ractor.current[:pp_sharing_detection] = b end
singleline_pp(obj, out=$>) 按一下以切換來源
將 obj
輸出至 out
,類似 PP.pp
,但沒有縮排和換行。
PP.singleline_pp
傳回 out
。
# File lib/pp.rb, line 107 def PP.singleline_pp(obj, out=$>) q = SingleLine.new(out) q.guard_inspect_key {q.pp obj} q.flush out end
width_for(out) 按一下以切換來源
傳回 out
可用的寬度。由於 out
的寬度
-
如果
out
指定給 tty 裝置,則使用其寬度。 -
否則,或無法取得值,則假設
COLUMN
環境變數設定為寬度。 -
如果
COLUMN
未設定為非零數字,則假設為 80。
最後,傳回上述寬度值 - 1。
-
這個 -1 是針對 Windows 命令提示字元,如果到達最後一欄,它會將游標移至下一行。
# File lib/pp.rb, line 78 def PP.width_for(out) begin require 'io/console' _, width = out.winsize rescue LoadError, NoMethodError, SystemCallError end (width || ENV['COLUMNS']&.to_i&.nonzero? || 80) - 1 end