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