summaryrefslogtreecommitdiffstatshomepage
path: root/tekuti/page.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tekuti/page.scm')
-rw-r--r--tekuti/page.scm74
1 files changed, 64 insertions, 10 deletions
diff --git a/tekuti/page.scm b/tekuti/page.scm
index 06ff37a..1806c6b 100644
--- a/tekuti/page.scm
+++ b/tekuti/page.scm
@@ -25,13 +25,67 @@
;;; Code:
(define-module (tekuti page)
- #:export (page-debug))
-
-(define (page-debug headers)
- `(html (head (title "hello"))
- (body (p "hello world!")
- (table
- (tr (th "header") (th "value"))
- ,@(map (lambda (pair)
- `(tr (td ,(car pair)) (td ,(cdr pair))))
- headers)))))
+ #:use-module (tekuti git)
+ #:use-module (tekuti post)
+ #:use-module (tekuti request)
+ #:export (page-new-post
+ page-modify-post
+ page-new-comment
+ page-delete-comment
+ page-delete-post
+ page-index
+ page-show-post
+ page-archives
+ page-debug
+ page-search
+ page-show-post
+ page-debug
+ page-not-found))
+
+(define (make-post-slug y m day post)
+ (url:encode (format #f "~a/~a/~a" y m (url:encode post))))
+
+(define (show-post slug index)
+ `(sxml . (p "hello" ,slug)))
+
+(define (not-implemented request . args)
+ (rcons* request
+ 'status 404
+ 'body `(p "Not implemented:" ,(rref request 'url))))
+
+(define page-new-post not-implemented)
+(define page-modify-post not-implemented)
+(define page-new-comment not-implemented)
+(define page-delete-comment not-implemented)
+(define page-delete-post not-implemented)
+(define page-index not-implemented)
+
+(define (page-show-post request index year month day post)
+ (let ((slug (make-post-slug year month day post)))
+ (let ((tree (git-rev-parse (string-append (assq-ref index 'master) ":" slug))))
+ (let ((post (post-from-tree slug tree)))
+ `((title . "post")
+ (sxml . (pre ,(with-output-to-string
+ (lambda ()
+ (write post))))))))))
+
+(define page-archives not-implemented)
+
+(define (page-debug request index)
+ (rcons* request
+ 'title "hello"
+ 'body `(div
+ (p "hello world!")
+ (table
+ (tr (th "header") (th "value"))
+ ,@(map (lambda (pair)
+ `(tr (td ,(car pair)) (td ,(cdr pair))))
+ (rref request 'headers))))))
+
+(define page-search not-implemented)
+
+(define (page-not-found request index)
+ (rcons* request
+ 'status 404
+ 'body `(p "Not found:" ,(rref request 'url))))
+