module Goofy::Render
Public Class Methods
setup(app)
click to toggle source
# File lib/goofy/render.rb, line 5 def self.setup(app) app.settings[:render] ||= {} app.settings[:render][:template_engine] ||= "erb" app.settings[:render][:layout] ||= "layout" app.settings[:render][:views] ||= File.expand_path("views", Dir.pwd) app.settings[:render][:options] ||= { default_encoding: Encoding.default_external } end
Public Instance Methods
_cache()
click to toggle source
@private Used internally by #_render to cache the
Tilt templates.
# File lib/goofy/render.rb, line 59 def _cache Thread.current[:_cache] ||= Tilt::Cache.new end
_render(template, locals = {}, options = {}, &block)
click to toggle source
@private Renders 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") }
# File lib/goofy/render.rb, line 51 def _render(template, locals = {}, options = {}, &block) _cache.fetch(template) { Tilt.new(template, 1, options.merge(outvar: '@_output')) }.render(self, locals, &block) end
partial(template, locals = {})
click to toggle source
# File lib/goofy/render.rb, line 24 def partial(template, locals = {}) _render(template_path(template), locals, settings[:render][:options]) end
render(template, locals = {}, layout = settings[:render][:layout])
click to toggle source
# File lib/goofy/render.rb, line 15 def render(template, locals = {}, layout = settings[:render][:layout]) res.headers["Content-Type"] ||= "text/html; charset=utf-8" res.write(view(template, locals, layout)) end
template_path(template)
click to toggle source
# File lib/goofy/render.rb, line 28 def template_path(template) dir = settings[:render][:views] ext = settings[:render][:template_engine] return File.join(dir, "#{ template }.#{ ext }") end
view(template, locals = {}, layout = settings[:render][:layout])
click to toggle source
# File lib/goofy/render.rb, line 20 def view(template, locals = {}, layout = settings[:render][:layout]) partial(layout, locals.merge(content: partial(template, locals))) end