6.58. kink/io/OUTPUT_PRINTER¶
output をラップする printer の実装を提供する。
6.58.1. OUTPUT_PRINTER.new(Output Charset Newline ...[$config={}])¶
new は printer と output を両方提供する値を戻す。この値は、文字列を Charset でエンコード氏、バイト列を Output に書き込む。
コンフィグメソッド:
• C.flush_on_print
• C.replace_conversion_error
• C.synchronize
C.flush_on_printが呼ばれた場合、 Output のバッファは print か print_line が呼ばれた後ごとにフラッシュされる。
print_xxxメソッドは Charset を使って文字列をバイト列に変換する。文字列がエンコードできない場合、print_xxxメソッドはデフォルトで、 exception を引数として$errorを末尾呼び出しする。もしC.replace_conversion_errorが呼ばれた場合、print_xxxメソッドは変換エラーの場所に代替バイト列を書き込む。
C.synchronizeが呼ばれた場合、 Output へのアクセスと、文字列からバイト列への変換は、ひとつの mutex でシリアル化される。このオプションは、並列のwriteまたはprint操作が避けられない場合、たとえばstderrの場合に有用である。
事前条件
Output は output 型でなければならない。
Charset は charset 型でなければならない。
Newline は str 型でなければならない。
例
:BIN_OUTPUT.require_from('kink/io/')
:OUTPUT_PRINTER.require_from('kink/io/')
:CHARSET.require_from('kink/')
:Out <- BIN_OUTPUT.new
:P <- OUTPUT_PRINTER.new(Out CHARSET.utf8 "\r\n"){(:W)
W.flush_on_print
}
P.print_line('foo')
stdout.print_line(Out.bin.repr) # => (bin 0x66 0x6f 0x6f 0x0d 0x0a)