Sha256: 913293ddd6e097570cda7d883895f1dd98931e19d2c17d2fe5d143f30cd4bfdc

Contents?: true

Size: 896 Bytes

Versions: 4

Compression:

Stored size: 896 Bytes

Contents

require 'tilt'

module Helmet
  module Templates
    
    @@template_cache = Tilt::Cache.new
        
    def erb(template, options = {}, locals = {})
     render :erb, template, options, locals
    end

    def render(engine, data, options = {}, locals = {}, &block)
      layout = options.delete(:layout)
      # force template update
      @@template_cache.clear unless Goliath.env == :production
      compiled_template = @@template_cache.fetch(data, options) do
        template = Tilt.new(find_template(engine, data), nil, options)
      end      
      output = compiled_template.render nil, locals, &block
      if layout
        return render(engine, layout, options, locals) {output}
      end
      output
    end
    
    private 
    
    def find_template(engine, template)
      filename = "#{template.to_s}.#{engine.to_s}"
      File.join(views_folder, filename)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
helmet-0.0.6 lib/helmet/templates.rb
helmet-0.0.5 lib/helmet/templates.rb
helmet-0.0.4 lib/helmet/templates.rb
helmet-0.0.3 lib/helmet/templates.rb