A subclass of ERB
that writes directly to an IO
. Credit to Aaron Patterson and Masatoshi SEKI.
To use:
erbio = RDoc::ERBIO.new '<%= "hello world" %>', nil, nil File.open 'hello.txt', 'w' do |io| erbio.result binding end
Note that binding must enclose the io you wish to output on.
Defaults eoutvar
to 'io', otherwise is identical to ERB's initialize
# File ruby-3.1.2/lib/rdoc/erbio.rb, line 23 def initialize str, safe_level = nil, legacy_trim_mode = nil, legacy_eoutvar = 'io', trim_mode: nil, eoutvar: 'io' if RUBY_VERSION >= '2.6' super(str, trim_mode: trim_mode, eoutvar: eoutvar) else super(str, safe_level, legacy_trim_mode, legacy_eoutvar) end end
Instructs compiler
how to write to io_variable
# File ruby-3.1.2/lib/rdoc/erbio.rb, line 34 def set_eoutvar compiler, io_variable compiler.put_cmd = "#{io_variable}.write" compiler.insert_cmd = "#{io_variable}.write" compiler.pre_cmd = [] compiler.post_cmd = [] end