lib/hmote/render.rb in hmote-1.2.0 vs lib/hmote/render.rb in hmote-1.3.0

- old
+ new

@@ -1,19 +1,26 @@ require_relative "../hmote" module HMote::Render include HMote::Helpers + CONTENT_TYPE = "Content-Type".freeze + DEFAULT_CONTENT_TYPE = "text/html; charset=utf-8".freeze + def self.setup(app) app.settings[:hmote] ||= {} - app.settings[:hmote][:views] ||= File.expand_path("views", Dir.pwd) - app.settings[:hmote][:layout] ||= "layout" + + app.layout("layout") + app.view_path("views") end def render(template, params = {}, layout = settings[:hmote][:layout]) - res.headers["Content-Type"] ||= "text/html; charset=utf-8" + res.status ||= 200 + res.headers[CONTENT_TYPE] ||= DEFAULT_CONTENT_TYPE res.write(view(template, params, layout)) + + halt(res.finish) end def view(template, params = {}, layout = settings[:hmote][:layout]) return partial(layout, params.merge(content: partial(template, params))) end @@ -21,12 +28,18 @@ def partial(template, params = {}) return hmote(template_path(template), params.merge(app: self), TOPLEVEL_BINDING) end def template_path(template) - if template.end_with?(".mote") - return template - else - return File.join(settings[:hmote][:views], "#{template}.mote") + return File.join(settings[:hmote][:views], "#{template}.mote") + end + + module ClassMethods + def layout(name) + settings[:hmote][:layout] = name + end + + def view_path(path) + settings[:hmote][:views] = File.expand_path(path, Dir.pwd) end end end