diff --git a/racketmq/template.rkt b/racketmq/template.rkt new file mode 100644 index 0000000..4296fd7 --- /dev/null +++ b/racketmq/template.rkt @@ -0,0 +1,22 @@ +#lang racket/base +;; Templated response generation + +(provide web-respond/page! + include-template + include-fragment) + +(require web-server/templates) +(require syndicate/drivers/web) +(require (for-syntax racket/base)) + +(define-syntax (include-fragment stx) + (syntax-case stx () + [(_ fragment-str) + ;; It's important to preserve the lexical context of the *path* + ;; because this is what's used to resolve any mentioned + ;; identifiers in the template file! + (quasisyntax/loc stx + (include-template #,(datum->syntax stx (format "templates/~a" (syntax-e #'fragment-str)))))])) + +(define (web-respond/page! id page-title page-body) + (web-respond/string! id (include-template "templates/_page.html"))) diff --git a/racketmq/templates/_page.html b/racketmq/templates/_page.html new file mode 100644 index 0000000..aad3170 --- /dev/null +++ b/racketmq/templates/_page.html @@ -0,0 +1,10 @@ + + + + + @|page-title| + + + @|page-body| + +