Module | Erubis::OptimizedGenerator |
In: |
erubis/engine/optimized.rb
|
# File erubis/engine/optimized.rb, line 20 def init_generator(properties={}) super @escapefunc ||= "Erubis::XmlHelper.escape_xml" @initialized = false @prev_is_expr = false end
# File erubis/engine/optimized.rb, line 85 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 79 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 73 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 91 def add_postamble(src) #super if @initialized src << "\n_buf\n" if @initialized end
# File erubis/engine/optimized.rb, line 50 def add_preamble(src) #@initialized = false #@prev_is_expr = false end
# File erubis/engine/optimized.rb, line 66 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 55 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 29 def escape_text(text) text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\' end
# File erubis/engine/optimized.rb, line 33 def escaped_expr(code) @escapefunc ||= 'Erubis::XmlHelper.escape_xml' return "#{@escapefunc}(#{code})" end
# File erubis/engine/optimized.rb, line 38 def switch_to_expr(src) return if @prev_is_expr @prev_is_expr = true src << ' _buf' end