2017-11-27 13:45:24 +03:00
|
|
|
# frozen_string_literal: true
|
2010-12-20 06:22:49 +03:00
|
|
|
require 'erb'
|
|
|
|
|
|
|
|
##
|
|
|
|
# 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
|
|
|
|
#
|
2018-03-26 08:56:26 +03:00
|
|
|
# File.open 'hello.txt', 'w' do |io|
|
2010-12-20 06:22:49 +03:00
|
|
|
# erbio.result binding
|
|
|
|
# end
|
|
|
|
#
|
|
|
|
# Note that binding must enclose the io you wish to output on.
|
|
|
|
|
|
|
|
class RDoc::ERBIO < ERB
|
|
|
|
|
|
|
|
##
|
|
|
|
# Defaults +eoutvar+ to 'io', otherwise is identical to ERB's initialize
|
|
|
|
|
|
|
|
def initialize str, safe_level = nil, trim_mode = nil, eoutvar = 'io'
|
2018-02-22 16:28:25 +03:00
|
|
|
if RUBY_VERSION >= '2.6'
|
|
|
|
super(str, trim_mode: trim_mode, eoutvar: eoutvar)
|
|
|
|
else
|
|
|
|
super
|
|
|
|
end
|
2010-12-20 06:22:49 +03:00
|
|
|
end
|
|
|
|
|
|
|
|
##
|
|
|
|
# Instructs +compiler+ how to write to +io_variable+
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
end
|
|
|
|
|