Sha256: d9d74fc7b30a529a6fd9da214f6f3fb6b6e9c5b7c12c75df5b3440d771c97aa8
Contents?: true
Size: 1.59 KB
Versions: 3
Compression:
Stored size: 1.59 KB
Contents
require "tilt" class Cuba module Render def self.setup(app) app.settings[:render] ||= {} app.settings[:render][:template_engine] ||= "erb" app.settings[:render][:views] ||= File.expand_path("views", Dir.pwd) app.settings[:render][:options] ||= { default_encoding: Encoding.default_external } end def view(template, locals = {}, layout = "layout") partial(layout, { content: partial(template, locals) }.merge(locals)) end def template_path(template) "%s/%s.%s" % [ settings[:render][:views], template, settings[:render][:template_engine] ] end def partial(template, locals = {}) render(template_path(template), locals, settings[:render][:options]) end # Render any type of template file supported by Tilt. # # @example # # # Renders home, and is assumed to be HAML. # render("home.haml") # # # Renders with some local variables # render("home.haml", site_name: "My Site") # # # Renders with HAML options # render("home.haml", {}, ugly: true, format: :html5) # # # Renders in layout # render("layout.haml") { render("home.haml") } # def render(template, locals = {}, options = {}, &block) _cache.fetch(template) { Tilt.new(template, 1, options.merge(outvar: '@_output')) }.render(self, locals, &block) end # @private Used internally by #render to cache the # Tilt templates. def _cache Thread.current[:_cache] ||= Tilt::Cache.new end private :_cache end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
cuba-3.1.0 | lib/cuba/render.rb |
cuba-3.1.0.rc2 | lib/cuba/render.rb |
cuba-3.1.0.rc1 | lib/cuba/render.rb |