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

(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]