;; View a garden ;; (lambda (uri) (for-each eval (with-input-from-file "garden.scm" read-list)) (serve-document-header (ext->mime "gmi")) (let ((query (uri-query uri))) (if (null? query) (begin (print "=> register.scm Please register first.")) (let ((hash (symbol->string (caar query)))) (condition-case (let* ((g (with-input-from-file (make-pathname "accounts" hash) read)) (user (garden-prop 'user g)) (visits (+ 1 (garden-prop 'visits g)))) (garden-prop-set! 'visits visits g) (print "# " user "'s garden\n") (if (> visits 1) (print "Welcome back, " user "!\n") (begin (print "Welcome to your new garden, " user "!\n" "\n" "## !!Important!!\n\n" "To visit and check on your garden, you'll need to use this link:\n" (uri->string uri) "\n" "Remember to bookmark it to keep it safe!\n"))) (update-garden! g) (with-output-to-file (make-pathname "accounts" hash) (lambda () (write g))) (print "```") (display-garden g) (print "```") (describe-garden g) (print "\nWater level:") (print "```") (display-water-level g) (print "```") (print "\n## Menu") (print "\n=> water.scm?" hash " Water plant\n") (when (= (garden-prop 'stage-idx g) 5) (print "=> plant-new.scm?" hash " Plant a new seed\n")) (print "=> help.scm?" hash " Caring for your plant (Instructions)\n" "\n" "=> delete-confirm.scm?" hash " Delete garden (Irreversible!)\n" "\n" "=> ./ μBotany start page")) (o (exn) (print "This garden no longer exists.\n\n" "=> register.scm Register to create another.")))))))