Module: HMote::Render

Includes:
Helpers
Defined in:
lib/hmote/render.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

CONTENT_TYPE =
"Content-Type".freeze
DEFAULT_CONTENT_TYPE =
"text/html; charset=utf-8".freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.setup(app) ⇒ Object



9
10
11
12
13
14
# File 'lib/hmote/render.rb', line 9

def self.setup(app)
  app.settings[:hmote] ||= {}

  app.layout("layout")
  app.view_path("views")
end

Instance Method Details

#partial(template, params = {}) ⇒ Object



25
26
27
# File 'lib/hmote/render.rb', line 25

def partial(template, params = {})
  return hmote(template_path(template), params.merge(app: self), TOPLEVEL_BINDING)
end

#render(template, params = {}, layout = settings[:hmote]) ⇒ Object



16
17
18
19
# File 'lib/hmote/render.rb', line 16

def render(template, params = {}, layout = settings[:hmote][:layout])
  res.headers[CONTENT_TYPE] ||= DEFAULT_CONTENT_TYPE
  res.write(view(template, params, layout))
end

#template_path(template) ⇒ Object



29
30
31
# File 'lib/hmote/render.rb', line 29

def template_path(template)
  return File.join(settings[:hmote][:views], "#{template}.mote")
end

#view(template, params = {}, layout = ) ⇒ Object



21
22
23
# File 'lib/hmote/render.rb', line 21

def view(template, params = {}, layout = settings[:hmote][:layout])
  return partial(layout, params.merge(content: partial(template, params)))
end