PP 클래스
PP 클래스
Ruby 객체를 예쁘게 출력해 주는 pretty-printer예요.
출처: Ruby 3.3 API
본문
PP가 하는 일 (What PP Does)
보통 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>>
pretty-print로 출력하면 이렇게 보기 좋게 정리돼요.
#<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>
사용법 (Usage)
pp(obj) #=> obj
pp obj #=> obj
pp(obj1, obj2, ...) #=> [obj1, obj2, ...]
pp() #=> nil
obj(s)를 $>에 pretty-print 형식으로 출력해요. 그리고 obj(s)를 그대로 반환해요.
출력 커스터마이징 (Output Customization)
자기 클래스에 딱 맞는 pretty-print 함수를 정의하려면, 클래스 안에서 #pretty_print(pp) 메서드를 재정의하면 돼요. 재정의 전에 require 'pp'가 필요한 점만 기억해 두면 좋아요.
#pretty_print는 pp 인자를 받는데, 이는 PP 클래스의 인스턴스예요. 이 메서드는 text, breakable, nest, group, pp를 써서 객체를 출력해요.
JSON pretty-print (Pretty-Print JSON)
JSON을 예쁘게 출력하려면 JSON#pretty_generate를 참고해요.
저자: Tanaka Akira <[email protected]>
상수 (Constants)
- VERSION
Public Class Methods
pp (obj, out=$>, width=width_for(out))
obj를 out에 width 컬럼 너비로 pretty-print 형식으로 출력해요.
out을 생략하면 $>로 간주해요. width를 생략하면 out의 너비(라고 width_for가 정한 값)를 사용해요.
PP.pp는 out을 반환해요.
sharing_detection ()
공유 감지 플래그를 boolean 값으로 반환해요. 기본값은 false(nil)예요.
sharing_detection= (b)
공유 감지 플래그를 b로 설정해요.
singleline_pp (obj, out=$>)
obj를 PP.pp처럼 출력하되 들여쓰기와 개행 없이 한 줄로 출력해요.
PP.singleline_pp는 out을 반환해요.
width_for (out)
out에 사용할 수 있는 너비를 반환해요. out의 너비는 다음과 같이 정해져요.
out이 tty 디바이스에 연결돼 있으면 그 너비를 사용해요.- 그렇지 않거나 값을 얻지 못하면
COLUMN환경변수가 너비로 설정돼 있다고 가정해요. COLUMN이 0이 아닌 숫자로 설정돼 있지 않으면 80으로 가정해요.
마지막으로 위에서 구한 너비 값에서 1을 뺀 값을 반환해요. 이 -1은 Windows 명령 프롬프트가 마지막 컬럼에 도달하면 커서를 다음 줄로 옮기기 때문이에요.