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