Module Erubis::Basic::Converter
In: lib/erubis/converter.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

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]