Module: Erubis::RubyGenerator

Includes:
Generator, StringBufferEnhancer
Defined in:
lib/erubis_rails_helper/erubis/generator.rb

Overview

code generator for Ruby

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.supported_propertiesObject

:nodoc:



37
38
39
# File 'lib/erubis_rails_helper/erubis/generator.rb', line 37

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

Instance Method Details

#add_expr_debug(src, code) ⇒ Object



76
77
78
79
80
# File 'lib/erubis_rails_helper/erubis/generator.rb', line 76

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



71
72
73
74
# File 'lib/erubis_rails_helper/erubis/generator.rb', line 71

def add_expr_escaped(src, code)
  #src << ' _buf << ' << escaped_expr(code) << ';'
  src << " #{eoutvar} << " << escaped_expr(code) << ';'
end

#add_expr_literal(src, code) ⇒ Object



66
67
68
69
# File 'lib/erubis_rails_helper/erubis/generator.rb', line 66

def add_expr_literal(src, code)
  #src << ' _buf << (' << code << ').to_s;'
  src << " #{eoutvar} << (" << code << ").to_s;"
end

#add_stmt(src, code) ⇒ Object



60
61
62
63
64
# File 'lib/erubis_rails_helper/erubis/generator.rb', line 60

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 ++



55
56
57
58
# File 'lib/erubis_rails_helper/erubis/generator.rb', line 55

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

#escape_text(text) ⇒ Object



41
42
43
# File 'lib/erubis_rails_helper/erubis/generator.rb', line 41

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

#escaped_expr(code) ⇒ Object



45
46
47
# File 'lib/erubis_rails_helper/erubis/generator.rb', line 45

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

#init_generator(properties = {}) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/erubis_rails_helper/erubis/generator.rb', line 29

def init_generator(properties={})
  super
  
  @escapefunc ||= "Erubis::XmlHelper.escape_xml"
  
  set_eoutvar(properties[:eoutvar] || '_buf')
end