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 メソッドが呼び出されるみたい。