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

basic converter which supports ’<% … %>’ notation.

Methods

Included Modules

Erubis::Converter

Constants

DEFAULT_REGEXP = pattern_regexp('<% %>')   DEFAULT_REGEXP = /(.*?)(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m DEFAULT_REGEXP = /(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m DEFAULT_REGEXP = /<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m

Attributes

pattern  [RW] 
trim  [RW] 

Public Instance methods

add expression code to src

[Source]

     # File lib/erubis/converter.rb, line 177
177:     def add_expr(src, code, indicator)
178:       case indicator
179:       when '='
180:         @escape ? add_expr_escaped(src, code) : add_expr_literal(src, code)
181:       when '=='
182:         @escape ? add_expr_literal(src, code) : add_expr_escaped(src, code)
183:       when '==='
184:         add_expr_debug(src, code)
185:       end
186:     end

[Source]

     # File lib/erubis/converter.rb, line 128
128:     def convert_input(src, input)
129:       pat = @pattern
130:       regexp = pat.nil? || pat == '<% %>' ? DEFAULT_REGEXP : pattern_regexp(pat)
131:       pos = 0
132:       is_bol = true     # is beginning of line
133:       input.scan(regexp) do |indicator, code, tailch, rspace|
134:         match = Regexp.last_match()
135:         len  = match.begin(0) - pos
136:         text = input[pos, len]
137:         pos  = match.end(0)
138:         ch   = indicator ? indicator[0] : nil
139:         lspace = ch == ?= ? nil : detect_spaces_at_bol(text, is_bol)
140:         is_bol = rspace ? true : false
141:         add_text(src, text) if text && !text.empty?
142:         ## * when '<%= %>', do nothing
143:         ## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>'
144:         if ch == ?=              # <%= %>
145:           rspace = nil if tailch && !tailch.empty?
146:           add_text(src, lspace) if lspace
147:           add_expr(src, code, indicator)
148:           add_text(src, rspace) if rspace
149:         elsif ch == ?\#          # <%# %>
150:           n = code.count("\n") + (rspace ? 1 : 0)
151:           if @trim && lspace && rspace
152:             add_stmt(src, "\n" * n)
153:           else
154:             add_text(src, lspace) if lspace
155:             add_stmt(src, "\n" * n)
156:             add_text(src, rspace) if rspace
157:           end
158:         elsif ch == ?%           # <%% %>
159:           s = "#{lspace}#{@prefix||='<%'}#{code}#{tailch}#{@postfix||='%>'}#{rspace}"
160:           add_text(src, s)
161:         else                     # <% %>
162:           if @trim && lspace && rspace
163:             add_stmt(src, "#{lspace}#{code}#{rspace}")
164:           else
165:             add_text(src, lspace) if lspace
166:             add_stmt(src, code)
167:             add_text(src, rspace) if rspace
168:           end
169:         end
170:       end
171:       #rest = $' || input                        # ruby1.8
172:       rest = pos == 0 ? input : input[pos..-1]   # ruby1.9
173:       add_text(src, rest)
174:     end

[Source]

     # File lib/erubis/converter.rb, line 104
104:     def init_converter(properties={})
105:       super(properties)
106:       @pattern = properties[:pattern]
107:       @trim    = properties[:trim] != false
108:     end

Protected Instance methods

return regexp of pattern to parse eRuby script

[Source]

     # File lib/erubis/converter.rb, line 113
113:     def pattern_regexp(pattern)
114:       @prefix, @postfix = pattern.split()   # '<% %>' => '<%', '%>'
115:       #return /(.*?)(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m
116:       #return /(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m
117:       return /#{@prefix}(=+|-|\#|%)?(.*?)([-=])?#{@postfix}([ \t]*\r?\n)?/m
118:     end

[Validate]