(defpackage #:hp/view/renderer
  (:use #:cl)
  (:local-nicknames (#:jg #:jingle))
  (:local-nicknames (#:pi #:piccolo))
  (:local-nicknames (#:cfg #:hp/config/env))
  (:local-nicknames (#:cmp #:hp/components/**/*))
  (:export #:render
           #:partial-render))
(in-package #:hp/view/renderer)

(defun renderer ()
  (if (cfg:dev-mode-p)
      #'pi:element-string
      #'pi:elem-str))

(defun render (page &key status metadata)
  (jg:with-html-response
    (if status (jg:set-response-status status))
    (funcall (renderer) (cmp:document :metadata metadata
                          (cmp:layout page)))))

(defun partial-render (component &key status)
  (jg:with-html-response
    (if status (jg:set-response-status status))
    (funcall (renderer) (cmp:partial-document component))))