Yu-Gi-Oh! Deck Building and Card Inventory Management web interface written in Common Lisp, utilizing HTMX.
Du kan inte välja fler än 25 ämnen
Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
|
- (in-package :cl-user)
-
- (defpackage #:cl-deck-builder2.view
- (:use #:cl)
- (:import-from #:cl-deck-builder2.config
- #:*template-directory*)
- (:import-from #:cl-deck-builder2.i18n
- #:with-locale)
- (:import-from #:caveman2
- #:*response*
- #:response-headers)
- (:import-from #:djula
- #:add-template-directory
- #:compile-template*
- #:render-template*
- #:*djula-execute-package*)
- (:import-from #:datafly
- #:encode-json)
- (:export #:render
- #:render-json)
- (:documentation "The VIEW package.
-
- We just use the defaults generated by Caveman2.
-
- It provides rendering functions for web view.
-
- Additionally, we have i18n support with gettext."))
-
- (in-package :cl-deck-builder2.view)
-
- (djula:add-template-directory *template-directory*)
-
- (defparameter *template-registry* (make-hash-table :test 'equal)
- "Hash table of registered templates. Used for caching.")
-
- (defun render (template-path &optional env (lang "en_US"))
- "Use Djula to render a template."
- (let ((template (gethash template-path *template-registry*)))
- (unless template
- (setf template (djula:compile-template* (princ-to-string template-path)))
- (setf (gethash template-path *template-registry*) template))
- (with-locale (lang)
- (apply #'djula:render-template* template nil env))))
-
- (defun render-json (object)
- "Use Datafly to render a JSON object."
- (setf (getf (response-headers *response*) :content-type) "application/json")
- (encode-json object))
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- ;; Execute package definition
-
- (defpackage #:cl-deck-builder2.djula
- (:use :cl)
- (:import-from :cl-deck-builder2.config
- :config
- :appenv
- :developmentp
- :productionp)
- (:import-from :caveman2
- :url-for)
- (:documentation "The package in which template expressions are evaluated.
-
- SEE <https://quickref.common-lisp.net/djula.html#g_t_276866_2769>"))
-
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (setf djula:*djula-execute-package* (find-package :cl-deck-builder2.djula))
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (in-package #:djula)
-
- (djula:def-filter :describe (it)
- (with-output-to-string (s) (describe it s)))
|