Class: RDoc::ERBIO

Inherits:
ERB
  • Object
show all
Defined in:
lib/rdoc/erbio.rb

Overview

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.

Instance Method Summary collapse

Constructor Details

#initialize(str, safe_level = nil, legacy_trim_mode = nil, legacy_eoutvar = 'io', trim_mode: nil, eoutvar: 'io') ⇒ ERBIO

Defaults eoutvar to 'io', otherwise is identical to ERB's initialize


23
24
25
26
27
28
29
# File '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

Instance Method Details

#set_eoutvar(compiler, io_variable) ⇒ Object

Instructs compiler how to write to io_variable


34
35
36
37
38
39
# File '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