Module: Erubis::RubyGenerator

Includes:
Generator, StringBufferEnhancer
Included in:
Eruby, PI::Eruby
Defined in:
lib/erubis/engine/eruby.rb

Overview

code generator for Ruby

Instance Attribute Summary

Attributes included from Generator

#escapefunc

Class Method Summary collapse

Instance Method Summary collapse

Methods included from StringBufferEnhancer

#add_postamble, #add_preamble, desc

Methods included from Generator

#add_postamble, #add_preamble

Class Method Details

.supported_propertiesObject

:nodoc:



26
27
28
# File 'lib/erubis/engine/eruby.rb', line 26

def self.supported_properties()  # :nodoc:
  return []
end

Instance Method Details

#add_expr_debug(src, code) ⇒ Object



62
63
64
65
66
# File 'lib/erubis/engine/eruby.rb', line 62

def add_expr_debug(src, code)
  code.strip!
  s = (code.dump =~ /\A"(.*)"\z/) && $1
  src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
end

#add_expr_escaped(src, code) ⇒ Object



58
59
60
# File 'lib/erubis/engine/eruby.rb', line 58

def add_expr_escaped(src, code)
  src << ' _buf << ' << escaped_expr(code) << ';'
end

#add_expr_literal(src, code) ⇒ Object



54
55
56
# File 'lib/erubis/engine/eruby.rb', line 54

def add_expr_literal(src, code)
  src << ' _buf << (' << code << ').to_s;'
end

#add_stmt(src, code) ⇒ Object



48
49
50
51
52
# File 'lib/erubis/engine/eruby.rb', line 48

def add_stmt(src, code)
  #src << code << ';'
  src << code
  src << ';' unless code[-1] == ?\n
end

#add_text(src, text) ⇒ Object

– def add_preamble(src)

src << "_buf = [];"

end ++



44
45
46
# File 'lib/erubis/engine/eruby.rb', line 44

def add_text(src, text)
  src << " _buf << '" << escape_text(text) << "';" unless text.empty?
end

#escape_text(text) ⇒ Object



30
31
32
# File 'lib/erubis/engine/eruby.rb', line 30

def escape_text(text)
  text.gsub(/['\\]/, '\\\\\&')   # "'" => "\\'",  '\\' => '\\\\'
end

#escaped_expr(code) ⇒ Object



34
35
36
# File 'lib/erubis/engine/eruby.rb', line 34

def escaped_expr(code)
  return "#{@escapefunc}(#{code})"
end

#init_generator(properties = {}) ⇒ Object



21
22
23
24
# File 'lib/erubis/engine/eruby.rb', line 21

def init_generator(properties={})
  super
  @escapefunc ||= "Erubis::XmlHelper.escape_xml"
end