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

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]