6.59. kink/io/PRINTER¶
printer 型のコンパニオンモジュール。
6.59.1. printer 型¶
printer は文字列の出力ポートである。
printer は下層の書き込み先へのシーケンシャルな前方アクセスを提供する。
例
:STR_PRINTER.require_from('kink/io/')
:P <- STR_PRINTER.new("\r\n")
P.print_line('foo')
P.print('bar')
stdout.print_line(P.str.repr) # => "foo\r\nbar"
6.59.1.1. Printer.print(Str ...[$config={}])¶
print は Str を書き込む。
• C.on_success($success): default = {}
• C.on_error($error): default = 例外を投げる関数
IOエラーなしに Str が書き込まれた場合、 print は$successを引数なしで末尾呼び出しする。
IOエラーが起きた場合、 print は exception を引数として$errorを末尾呼び出しする。
事前条件
Str は str 型でなければならない。
$successは引数を取らない関数でなければならない。
$errorは exception を取る関数でなければならない。
例
:STR_PRINTER.require_from('kink/io/')
:P <- STR_PRINTER.new("\r\n")
P.print('foo')
P.print('bar')
stdout.print_line(P.str.repr) # => "foobar"
例: IOエラー
:FILE.require_from('kink/io/')
:CONTROL.require_from('kink/')
:CHARSET.require_from('kink/')
:P <- FILE.open_to_print('/tmp/print.txt' CHARSET.utf8 "\r\n")
P.close
P.print('foo'){(:C)
C.on_error{(:Exc)
stderr.print_line(Exc.message)
}
}
# => already closed
P.print('foo')
# Output:
# -- main exception
# [..root..]
# {..call by host..}
# ,,,
# already closed
6.59.1.2. Printer.print_line(Str ...[$config={}])¶
print_line は Str と newline を書き込む。
• C.on_success($success): default = {}
• C.on_error($error): default = 例外を投げる関数
IOエラーなしに Str と newline が書き込まれた場合、 print_line は引数なしで$successを末尾呼び出しする。
IOエラーが起きた場合、 print_line は exception を引数として$errorを末尾呼び出しする。
事前条件
Str は str 型でなければならない。
$successは引数を取らない関数でなければならない。
$errorは exception を取る関数でなければならない。
例
:STR_PRINTER.require_from('kink/io/')
:P <- STR_PRINTER.new("\r\n")
P.print_line('foo')
P.print_line('bar')
stdout.print_line(P.str.repr) # => "foo\r\nbar\r\n"
例: IOエラー
:FILE.require_from('kink/io/')
:CONTROL.require_from('kink/')
:CHARSET.require_from('kink/')
:P <- FILE.open_to_print('/tmp/print.txt' CHARSET.utf8 "\r\n")
P.close
P.print_line('foo'){(:C)
C.on_error{(:Exc)
stderr.print_line(Exc.message)
}
}
# => already closed
P.print_line('foo')
# Output:
# -- main exception
# [..root..]
# {..call by host..}
# ,,,
# already closed
6.59.1.3. Printer.newline¶
newline は print_line が使う改行文字の str を戻す。
6.59.2. PRINTER.is?(Val)¶
is? は Val が printer であるかどうかを戻す。
6.59.3. PRINTER.mixin¶
mixin はPrinter.print_lineメソッドを提供するミックスイントレイトを戻す。
print_line は newline メソッドと print メソッドを使って実装される。