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