Parent

Class Index [+]

Quicksearch

Erubis::Engine

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

Public Class Methods

load_file(filename, properties={}) click to toggle source

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.

    # File lib/erubis/engine.rb, line 48
48:     def self.load_file(filename, properties={})
49:       cachename = properties[:cachename] || (filename + '.cache')
50:       properties[:filename] = filename
51:       timestamp = File.mtime(filename)
52:       if test(ff, cachename) && timestamp == 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:         tmpname = cachename + rand().to_s[1,8]
59:         File.open(tmpname, 'wb') {|f| f.write(engine.src) }
60:         File.rename(tmpname, cachename)
61:         File.utime(timestamp, timestamp, cachename)
62:       end
63:       engine.src.untaint   # ok?
64:       return engine
65:     end
new(input=nil, properties={}) click to toggle source

include Evaluator include Converter include Generator

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

Public Instance Methods

convert!(input) click to toggle source

convert input string and set it to @src

    # File lib/erubis/engine.rb, line 37
37:     def convert!(input)
38:       @src = convert(input)
39:     end
process(input, context=nil, filename=nil) click to toggle source

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

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

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

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

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.