blob: 820a25ae01d452a1dcc6c89a6caa74b2b8ea53fa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# frozen_string_literal: true
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
#
# File.open 'hello.txt', 'w' do |io|
# 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'
if RUBY_VERSION >= '2.6'
super(str, trim_mode: trim_mode, eoutvar: eoutvar)
else
super
end
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
|