| Module | Erubis::OptimizedGenerator |
| In: |
lib/erubis/engine/optimized.rb
|
# File lib/erubis/engine/optimized.rb, line 21
21: def init_generator(properties={})
22: super
23: @escapefunc ||= "Erubis::XmlHelper.escape_xml"
24: @initialized = false
25: @prev_is_expr = false
26: end
# File lib/erubis/engine/optimized.rb, line 86
86: def add_expr_debug(src, code)
87: code.strip!
88: s = (code.dump =~ /\A"(.*)"\z/) && $1
89: src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
90: end
# File lib/erubis/engine/optimized.rb, line 80
80: def add_expr_escaped(src, code)
81: unless @initialized; src << "_buf = ''"; @initialized = true; end
82: switch_to_expr(src)
83: src << " << " << escaped_expr(code)
84: end
# File lib/erubis/engine/optimized.rb, line 74
74: def add_expr_literal(src, code)
75: unless @initialized; src << "_buf = ''"; @initialized = true; end
76: switch_to_expr(src)
77: src << " << (" << code << ").to_s"
78: end
# File lib/erubis/engine/optimized.rb, line 92
92: def add_postamble(src)
93: #super if @initialized
94: src << "\n_buf\n" if @initialized
95: end
# File lib/erubis/engine/optimized.rb, line 51
51: def add_preamble(src)
52: #@initialized = false
53: #@prev_is_expr = false
54: end
# File lib/erubis/engine/optimized.rb, line 67
67: def add_stmt(src, code)
68: switch_to_stmt(src) if @initialized
69: #super
70: src << code
71: src << ';' unless code[-1] == ?\n
72: end
# File lib/erubis/engine/optimized.rb, line 56
56: def add_text(src, text)
57: return if text.empty?
58: if @initialized
59: switch_to_expr(src)
60: src << " << '" << escape_text(text) << "'"
61: else
62: src << "_buf = '" << escape_text(text) << "';"
63: @initialized = true
64: end
65: end
# File lib/erubis/engine/optimized.rb, line 30
30: def escape_text(text)
31: text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\'
32: end
# File lib/erubis/engine/optimized.rb, line 34
34: def escaped_expr(code)
35: @escapefunc ||= 'Erubis::XmlHelper.escape_xml'
36: return "#{@escapefunc}(#{code})"
37: end
# File lib/erubis/engine/optimized.rb, line 39
39: def switch_to_expr(src)
40: return if @prev_is_expr
41: @prev_is_expr = true
42: src << ' _buf'
43: end