module Genio::Template
Public Class Methods
new(klass)
click to toggle source
# File lib/genio/template.rb, line 44 def initialize(klass) @klass = klass end
Public Instance Methods
generate_scope(values)
click to toggle source
# File lib/genio/template.rb, line 40 def generate_scope(values) Class.new do include values[:helper] if values[:helper] def initialize(klass) @klass = klass end def method_missing(name, *args) @klass.send(name, *args) end end.new(self) end
method_missing(name, *args)
click to toggle source
# File lib/genio/template.rb, line 48 def method_missing(name, *args) @klass.send(name, *args) end
parse_erb(template, values)
click to toggle source
# File lib/genio/template.rb, line 54 def parse_erb(template, values) filename = File.absolute_path(template, template_path) template = Tilt::ErubisTemplate.new(Dir["#{filename}*"].first || template) template.render(values[:scope] || self, values) end
render(template, values = {})
click to toggle source
# File lib/genio/template.rb, line 29 def render(template, values = {}) values = { :create_file => nil }.merge(values) values = render_values.last.merge(values) values[:scope] ||= generate_scope(values) render_values.push(values) content = parse_erb(template, values) render_values.pop create_file(values[:create_file], content) if values[:create_file] content end
render_values()
click to toggle source
# File lib/genio/template.rb, line 25 def render_values @render_values ||= [{}] end
template_path()
click to toggle source
# File lib/genio/template.rb, line 60 def template_path @template_path ||= File.expand_path("../../../", __FILE__) end