Ruby でオレオレ Outputter を定義する
出力時に $stdout
に設定したクラスの #write
メソッドが呼び出されるのでそこに処理を定義してカスタマイズすることができるみたい。
[コード]
class CountOutputter def initialize count = 1, output = STDOUT @outputter = STDOUT @count = count end # ナンバリングして出力を行う def write output return @outputter.write output if output == "\n" @outputter.write "#{@count}. #{output}" @count += 1 end end outputter = CountOutputter.new $stdout = outputter puts "homu" p "homu" print "homu" puts "homu"
[出力]
1. homu 2. "homu" 3. homu4. homu
ちなみに puts
等の改行を含む出力が行われる場合、出力するデータ
と 改行コード
とで 計2回 #write
メソッドが呼び出されるみたい。