Module Erubis::PI::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

Processing Instructions (PI) converter for XML. this class converts ’<?rb … ?>’ and ’${…}’ notation.

Methods

Included Modules

Erubis::Converter

Attributes

pi  [RW] 
prefix  [RW] 

Public Instance methods

[Source]

     # File lib/erubis/converter.rb, line 225
225:     def convert(input)
226:       code = super(input)
227:       return @header || @footer ? "#{@header}#{code}#{@footer}" : code
228:     end

[Source]

     # File lib/erubis/converter.rb, line 216
216:     def init_converter(properties={})
217:       super(properties)
218:       @trim    = properties.fetch(:trim, true)
219:       @pi      = properties[:pi] if properties[:pi]
220:       @embchar = properties[:embchar] || '@'
221:       @pattern = properties[:pattern]
222:       @pattern = '<% %>' if @pattern.nil?  #|| @pattern == true
223:     end

Protected Instance methods

[Source]

     # File lib/erubis/converter.rb, line 232
232:     def convert_input(codebuf, input)
233:       unless @regexp
234:         @pi ||= 'e'
235:         ch = Regexp.escape(@embchar)
236:         if @pattern
237:           left, right = @pattern.split(' ')
238:           @regexp = /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}|#{left}(=+)(.*?)#{right}/m
239:         else
240:           @regexp = /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}/m
241:         end
242:       end
243:       #
244:       is_bol = true
245:       pos = 0
246:       input.scan(@regexp) do |pi_arg, stmt, rspace,
247:                               indicator1, expr1, indicator2, expr2|
248:         match = Regexp.last_match
249:         len = match.begin(0) - pos
250:         text = input[pos, len]
251:         pos = match.end(0)
252:         lspace = stmt ? detect_spaces_at_bol(text, is_bol) : nil
253:         is_bol = stmt && rspace ? true : false
254:         add_text(codebuf, text) # unless text.empty?
255:         #
256:         if stmt
257:           if @trim && lspace && rspace
258:             add_pi_stmt(codebuf, "#{lspace}#{stmt}#{rspace}", pi_arg)
259:           else
260:             add_text(codebuf, lspace) if lspace
261:             add_pi_stmt(codebuf, stmt, pi_arg)
262:             add_text(codebuf, rspace) if rspace
263:           end
264:         else
265:           add_pi_expr(codebuf, expr1 || expr2, indicator1 || indicator2)
266:         end
267:       end
268:       #rest = $' || input                        # ruby1.8
269:       rest = pos == 0 ? input : input[pos..-1]   # ruby1.9
270:       add_text(codebuf, rest)
271:     end

[Validate]