Class Erubis::PI::TinyEruby
In: lib/erubis/tiny.rb
Parent: Object
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

convert   evaluate   new   result  

Constants

EMBEDDED_PATTERN = /(^[ \t]*)?<\?rb(\s.*?)\?>([ \t]*\r?\n)?|@(!+)?\{(.*?)\}@/m

Attributes

src  [R] 

Public Class methods

[Source]

    # File lib/erubis/tiny.rb, line 81
81:     def initialize(input=nil, options={})
82:       @escape  = options[:escape] || 'Erubis::XmlHelper.escape_xml'
83:       @src = convert(input) if input
84:     end

Public Instance methods

[Source]

     # File lib/erubis/tiny.rb, line 90
 90:     def convert(input)
 91:       src = "_buf = '';"           # preamble
 92:       pos = 0
 93:       input.scan(EMBEDDED_PATTERN) do |lspace, stmt, rspace, indicator, expr|
 94:         match = Regexp.last_match
 95:         len   = match.begin(0) - pos
 96:         text  = input[pos, len]
 97:         pos   = match.end(0)
 98:         #src << " _buf << '" << escape_text(text) << "';"
 99:         text.gsub!(/['\\]/, '\\\\\&')
100:         src << " _buf << '" << text << "';" unless text.empty?
101:         if stmt                # <?rb ... ?>
102:           if lspace && rspace
103:             src << "#{lspace}#{stmt}#{rspace}"
104:           else
105:             src << " _buf << '" << lspace << "';" if lspace
106:             src << stmt << ";"
107:             src << " _buf << '" << rspace << "';" if rspace
108:           end
109:         else                       # ${...}, $!{...}
110:           if !indicator
111:             src << " _buf << " << @escape << "(" << expr << ");"
112:           elsif indicator == '!'
113:             src << " _buf << (" << expr << ").to_s;"
114:           end
115:         end
116:       end
117:       #rest = $' || input                        # ruby1.8
118:       rest = pos == 0 ? input : input[pos..-1]   # ruby1.9
119:       #src << " _buf << '" << escape_text(rest) << "';"
120:       rest.gsub!(/['\\]/, '\\\\\&')
121:       src << " _buf << '" << rest << "';" unless rest.empty?
122:       src << "\n_buf.to_s\n"       # postamble
123:       return src
124:     end

[Source]

     # File lib/erubis/tiny.rb, line 134
134:     def evaluate(_context=Object.new)
135:       if _context.is_a?(Hash)
136:         _obj = Object.new
137:         _context.each do |k, v| _obj.instance_variable_set("@#{k}", v) end
138:         _context = _obj
139:       end
140:       _context.instance_eval @src
141:     end

def escape_text(text)

  return text.gsub!(/['\\]/, '\\\\\&') || text

end

[Source]

     # File lib/erubis/tiny.rb, line 130
130:     def result(_binding=TOPLEVEL_BINDING)
131:       eval @src, _binding
132:     end

[Validate]