diff options
author | nathansmith <nathansmith@posteo.com> | 2025-05-14 07:30:29 -0600 |
---|---|---|
committer | nathansmith <nathansmith@posteo.com> | 2025-05-14 07:30:29 -0600 |
commit | b1b9df6726332f1d2b635fe63019df10029e6c77 (patch) | |
tree | 6e01b24a3ce020136d70dff74933fdc71b699b76 /cgi-bin/guest_book.cgi | |
parent | 32af1db1f3fdb1a98b767fc6200386f2130de798 (diff) |
Finished up scheme cgi
Diffstat (limited to 'cgi-bin/guest_book.cgi')
-rwxr-xr-x | cgi-bin/guest_book.cgi | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/cgi-bin/guest_book.cgi b/cgi-bin/guest_book.cgi index d527d2d..f8caccf 100755 --- a/cgi-bin/guest_book.cgi +++ b/cgi-bin/guest_book.cgi @@ -62,7 +62,9 @@ (guest `(("name" . ,name) ("url" . ,url) ("message" . ,message) - ("date" . ,(date->string (current-date) "~B, ~d ~Y"))))) + ("date" . ,(date->string (current-date) "~B, ~d ~Y")))) + (not-already-added #t)) + (if (file-exists? guest-book-json-file) (call-with-input-file guest-book-json-file (lambda (fp) @@ -76,28 +78,35 @@ (letrec ((check-if-already-added (lambda (guests) (unless (eq? guests '()) - (unless (letrec ((guest-item-compare - (lambda (index) - (if (< index (- (length guest) 1)) - (and (cdr (list-ref (car guests) - index)) - (cdr (list-ref guest index)) - (guest-item-compare - (+ index 1))) ;; Unholyness - - (check-if-already-added (cdr guests)))))) + (cond ((compare-guests 0 (car guests) guest) + (set! not-already-added #f)) + (else + (check-if-already-added (cdr guests))))))) + (compare-guests + (lambda (index guest1 guest2) + (and (string= (cdr (list-ref guest1 index)) + (cdr (list-ref guest2 index))) + (cond ((< index 3) + (compare-guests (+ index 1) guest1 guest2)) + (else #t)))))) (check-if-already-added guest-book)) ;; Add guest to guest-book - (cond ((eq? guest-book '()) - (set! guest-book (list guest))) - (else - (append! guest-book (list guest)))) - - ;; Write guest book to json - (call-with-output-file guest-book-json-file - (lambda (fp) - (scm->json (list->vector guest-book) fp))))) + (cond (not-already-added + (cond ((eq? guest-book '()) + (set! guest-book (list guest))) + (else + (append! guest-book (list guest)))) + + ;; Write guest book to json + (call-with-output-file guest-book-json-file + (lambda (fp) + (scm->json (list->vector guest-book) fp))) + + (display "<p>You been added to the guest book yippe (:</p>\ +<img src=\"../images/yippee.gif\" alt=\"yippee!\"/>\n")) + (else + (display "You already been added\n"))))) (define (handle-fields) (let ((form (get-form))) |