Module Erubis::OptimizedGenerator
In: lib/erubis/engine/optimized.rb
Eruby\n[lib/erubis/engine/eruby.rb\nlib/erubis/helpers/rails_helper.rb] PreprocessingEruby XmlEruby HeaderFooterEruby PrintEnabledEruby StdoutEruby FastEruby\n[lib/erubis/engine/eruby.rb\nlib/erubis/helpers/rails_helper.rb] StringBufferEruby BiPatternEruby InterpolationEruby PercentLineEruby PrintOutSimplifiedEruby NoTextEruby ErboutEruby StringIOEruby ArrayEruby PrintOutEruby SimplifiedEruby EscapedEruby DeleteIndentEruby StdoutSimplifiedEruby NoCodeEruby ArrayBufferEruby PreprocessingEruby OptimizedEruby Engine Ejava Ephp Eperl Ec Ejavascript Escheme EscapedEjava EscapedEphp EscapedEc OptimizedXmlEruby EscapedEperl EscapedEjavascript EscapedEscheme ErubisError NotSupportedError CommandOptionError Enumerable Context StandardError RubyEvaluator Eruby RubyGenerator PI::Engine Ejava Eperl Ec Ejavascript Escheme Ephp JavaGenerator Evaluator Engine PI::Converter Generator PerlGenerator CGenerator JavascriptGenerator SchemeGenerator PhpGenerator Basic::Converter Main Engine TinyEruby TinyEruby lib/erubis/engine/escheme.rb lib/erubis/engine/ec.rb lib/erubis/engine/eperl.rb lib/erubis/engine/eruby.rb lib/erubis/engine/ephp.rb lib/erubis/helpers/rails_helper.rb lib/erubis/preprocessing.rb lib/erubis/error.rb lib/erubis/engine/ejava.rb lib/erubis/engine/ejavascript.rb lib/erubis/context.rb lib/erubis/engine/optimized.rb lib/erubis/main.rb lib/erubis/engine/enhanced.rb lib/erubis/engine.rb lib/erubis/tiny.rb NoCodeEnhancer ArrayBufferEnhancer Generator StringBufferEnhancer OptimizedGenerator SchemeGenerator lib/erubis/engine/escheme.rb lib/erubis/engine/ec.rb lib/erubis/engine/eperl.rb lib/erubis/engine/eruby.rb lib/erubis/engine/ephp.rb lib/erubis/engine/ejava.rb lib/erubis/engine/ejavascript.rb lib/erubis/engine.rb lib/erubis/tiny.rb Converter PI SimplifyEnhancer StdoutEnhancer Converter lib/erubis/helpers/rails_helper.rb TemplateConverter RailsHelper RailsFormHelper Helpers XmlHelper HeaderFooterEnhancer RubyGenerator PhpGenerator CGenerator lib/erubis/engine.rb Converter Basic PreprocessingHelper Evaluator BiPatternEnhancer PrintEnabledEnhancer PerlGenerator JavascriptGenerator PercentLineEnhancer NoTextEnhancer ErboutEnhancer PrintOutEnhancer EscapeEnhancer JavaGenerator DeleteIndentEnhancer StringIOEnhancer ArrayEnhancer RubyEvaluator InterpolationEnhancer Erubis dot/m_23_0.png

Methods

Included Modules

Generator

Public Instance methods

[Source]

    # 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

Protected Instance methods

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # File lib/erubis/engine/optimized.rb, line 51
51:     def add_preamble(src)
52:       #@initialized = false
53:       #@prev_is_expr = false
54:     end

[Source]

    # 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

[Source]

    # 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

[Source]

    # File lib/erubis/engine/optimized.rb, line 30
30:     def escape_text(text)
31:       text.gsub(/['\\]/, '\\\\\&')   # "'" => "\\'",  '\\' => '\\\\'
32:     end

[Source]

    # 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

[Source]

    # 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

[Source]

    # File lib/erubis/engine/optimized.rb, line 45
45:     def switch_to_stmt(src)
46:       return unless @prev_is_expr
47:       @prev_is_expr = false
48:       src << ';'
49:     end

[Validate]