Class Erubis::Engine
In: lib/erubis/engine.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

(abstract) abstract engine class. subclass must include evaluator and converter module.

Methods

convert!   load_file   new   process   process_proc  

Public Class methods

load file, write cache file, and return engine object. this method create code cache file automatically. cachefile name can be specified with properties[:cachename], or filname + ‘cache’ is used as default.

[Source]

    # File lib/erubis/engine.rb, line 49
49:     def self.load_file(filename, properties={})
50:       cachename = properties[:cachename] || (filename + '.cache')
51:       properties[:filename] = filename
52:       if test(?f, cachename) && File.mtime(filename) <= File.mtime(cachename)
53:         engine = self.new(nil, properties)
54:         engine.src = File.read(cachename)
55:       else
56:         input = File.open(filename, 'rb') {|f| f.read }
57:         engine = self.new(input, properties)
58:         File.open(cachename, 'wb') do |f|
59:           f.flock(File::LOCK_EX)
60:           f.write(engine.src)
61:           f.flush()
62:         end
63:       end
64:       engine.src.untaint   # ok?
65:       return engine
66:     end

include Evaluator include Converter include Generator

[Source]

    # File lib/erubis/engine.rb, line 26
26:     def initialize(input=nil, properties={})
27:       #@input = input
28:       init_generator(properties)
29:       init_converter(properties)
30:       init_evaluator(properties)
31:       @src    = convert(input) if input
32:     end

Public Instance methods

convert input string and set it to @src

[Source]

    # File lib/erubis/engine.rb, line 38
38:     def convert!(input)
39:       @src = convert(input)
40:     end

helper method to convert and evaluate input text with context object. context may be Binding, Hash, or Object.

[Source]

    # File lib/erubis/engine.rb, line 73
73:     def process(input, context=nil, filename=nil)
74:       code = convert(input)
75:       filename ||= '(erubis)'
76:       if context.is_a?(Binding)
77:         return eval(code, context, filename)
78:       else
79:         context = Context.new(context) if context.is_a?(Hash)
80:         return context.instance_eval(code, filename)
81:       end
82:     end

helper method evaluate Proc object with contect object. context may be Binding, Hash, or Object.

[Source]

    # File lib/erubis/engine.rb, line 89
89:     def process_proc(proc_obj, context=nil, filename=nil)
90:       if context.is_a?(Binding)
91:         filename ||= '(erubis)'
92:         return eval(proc_obj, context, filename)
93:       else
94:         context = Context.new(context) if context.is_a?(Hash)
95:         return context.instance_eval(&proc_obj)
96:       end
97:     end

[Validate]