@shyouheiさんがネタをふってくれました。
http://twitter.com/shyouhei/status/9738804403
ちょっと前、というかずいぶん前にこんなの(ERBの言い訳)書いてたのを思い出して、試してみました。$stdoutに限定したらこんな感じです。@shyouheiさんが使うならこんな程度のひどさで大丈夫ですよね?
誰でも使えるようなやつを書くなら、もうちょっと化粧箱に入れないといやがられるだろうな。
require 'erb' src = <<EOS Hello, World. <%= Time.now.strftime("%H:%M:%S") %> EOS class ERB2stdout < ERB def set_eoutvar(compiler, eoutvar = '_eoutvar') compiler.put_cmd = ['$stdout.print'] compiler.insert_cmd = ['$stdout.print'] compiler.pre_cmd = [] compiler.post_cmd = [] end def run(b=TOPLEVEL_BINDING) result(b) end end e = ERB2stdout.new(src) e.run
(追記)本気で忘れていましたが、
ERbとERbLightがあった時代、ERbは標準出力に印字してました。