| Class | Erubis::OptimizedEruby |
| In: |
erubis/engine/optimized.rb
|
| Parent: | Engine |
Eruby class which generates optimized ruby code
# File erubis/engine/optimized.rb, line 23 def initialize(input, properties={}) @initialized = false @prev_is_expr = false super end
# File erubis/engine/optimized.rb, line 87 def add_expr_debug(src, code) code.strip! s = (code.dump =~ /\A"(.*)"\z/) && $1 src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");' end
# File erubis/engine/optimized.rb, line 81 def add_expr_escaped(src, code) unless @initialized; src << "_buf = ''"; @initialized = true; end switch_to_expr(src) src << " << " << escaped_expr(code) end
# File erubis/engine/optimized.rb, line 75 def add_expr_literal(src, code) unless @initialized; src << "_buf = ''"; @initialized = true; end switch_to_expr(src) src << " << (" << code << ").to_s" end
# File erubis/engine/optimized.rb, line 93 def add_postamble(src) #super if @initialized src << "\n_buf\n" if @initialized end
# File erubis/engine/optimized.rb, line 52 def add_preamble(src) #@initialized = false #@prev_is_expr = false end
# File erubis/engine/optimized.rb, line 68 def add_stmt(src, code) switch_to_stmt(src) if @initialized #super src << code src << ';' unless code[-1] == ?\n end
# File erubis/engine/optimized.rb, line 57 def add_text(src, text) return if text.empty? if @initialized switch_to_expr(src) src << " << '" << escape_text(text) << "'" else src << "_buf = '" << escape_text(text) << "';" @initialized = true end end
# File erubis/engine/optimized.rb, line 31 def escape_text(text) text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\' end
# File erubis/engine/optimized.rb, line 35 def escaped_expr(code) @escape ||= 'Erubis::XmlHelper.escape_xml' return "#{@escape}(#{code})" end
# File erubis/engine/optimized.rb, line 40 def switch_to_expr(src) return if @prev_is_expr @prev_is_expr = true src << ' _buf' end