Class | Erubis::Engine |
In: |
erubis/engine.rb
|
Parent: | Object |
(abstract) abstract engine class. subclass must include evaluator and converter module.
load file, write cache file, and return engine object. this method create cache file (filename + ’.cache’) automatically.
# File erubis/engine.rb, line 47 def self.load_file(filename, properties={}) cachename = filename + '.cache' properties[:filename] = filename if test(?f, cachename) && File.mtime(filename) <= File.mtime(cachename) engine = self.new(nil, properties) engine.src = File.read(cachename) else input = File.open(filename, 'rb') { |f| f.read } engine = self.new(input, properties) File.open(cachename, 'w') do |f| f.flock(File::LOCK_EX) f.write(engine.src) end end engine.src.untaint # ok? return engine end
convert input string and set it to @src
# File erubis/engine.rb, line 38 def convert!(input) @src = convert(input) end
helper method to convert and evaluate input text with context object. context may be Binding, Hash, or Object.
# File erubis/engine.rb, line 70 def process(input, context=nil, filename=nil) code = convert(input) filename ||= '(erubis)' if context.is_a?(Binding) return eval(code, context, filename) else context = Context.new(context) if context.is_a?(Hash) return context.instance_eval(code, filename) end end
helper method evaluate Proc object with contect object. context may be Binding, Hash, or Object.
# File erubis/engine.rb, line 86 def process_proc(proc_obj, context=nil, filename=nil) if context.is_a?(Binding) filename ||= '(erubis)' return eval(proc_obj, context, filename) else context = Context.new(context) if context.is_a?(Hash) return context.instance_eval(&proc_obj) end end