module Yaframework::Render
Public Instance Methods
partial(template, locals = {})
click to toggle source
# File lib/yaframework/render.rb, line 26 def partial(template, locals = {}) _render(template_path(template), locals, @settings[:options]) end
render(template, locals = {}, layout = @settings[:layout])
click to toggle source
# File lib/yaframework/render.rb, line 17 def render(template, locals = {}, layout = @settings[:layout]) res.headers["Content-Type"] ||= "text/html; charset=utf-8" res.write(view(template, locals, layout)) end
setup(settings = {})
click to toggle source
# File lib/yaframework/render.rb, line 7 def setup(settings = {}) @settings = settings @settings[:template_engine] ||= "erb" @settings[:layout] ||= "layout" @settings[:views] ||= File.expand_path("views", Dir.pwd) @settings[:options] ||= { default_encoding: Encoding.default_external } end
template_path(template)
click to toggle source
# File lib/yaframework/render.rb, line 30 def template_path(template) dir = @settings[:views] ext = @settings[:template_engine] File.join(dir, "#{template}.#{ext}") end
view(template, locals = {}, layout = @settings[:layout])
click to toggle source
# File lib/yaframework/render.rb, line 22 def view(template, locals = {}, layout = @settings[:layout]) partial(layout, locals.merge(content: partial(template, locals))) end
Private Instance Methods
_cache()
click to toggle source
# File lib/yaframework/render.rb, line 42 def _cache Thread.current[:_cache] ||= Tilt::Cache.new end
_render(template, locals = {}, options = {}, &block)
click to toggle source
# File lib/yaframework/render.rb, line 38 def _render(template, locals = {}, options = {}, &block) _cache.fetch(template) { Tilt.new(template, 1, options.merge(outvar: "@_output")) }.render(self, locals, &block) end