From ae8209410dcc05783e7dbf48001e97c73446d7f9 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 21 Nov 2016 09:09:05 +1300 Subject: [PATCH] Templates --- racketmq/template.rkt | 22 ++++++++++++++++++++++ racketmq/templates/_page.html | 10 ++++++++++ 2 files changed, 32 insertions(+) create mode 100644 racketmq/template.rkt create mode 100644 racketmq/templates/_page.html 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| + +