class 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 pp.rb, line 125 def sharing_detection Ractor.current[:pp_sharing_detection] end
sharing_detection=(b) 点击切换源代码
将共享检测标志设置为 b。
# File pp.rb, line 129 def sharing_detection=(b) Ractor.current[:pp_sharing_detection] = b end
singleline_pp(obj, out=$>) 点击切换源代码
像 PP.pp
一样将 obj
输出到 out
,但没有缩进和换行符。
PP.singleline_pp
返回 out
。
# File pp.rb, line 108 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 pp.rb, line 79 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