#!/usr/bin/env racket ;; lfs sponsor page generator #lang racket (require (planet ryanc/db:1:1)) (define cn (sqlite3-connect #:database "sponsee.db")) (define xrow "

~a

~a

~a

~a

~a

~a

") (define modval 3) (define itm-padder #("0" "" "")) (define xtmpl (file->string "zztmpl.htm")) (define xtle "~a sponsorship for $~a/mo") (define xkwd "sponsorship, ~a") (define xdsc "Sponsorship for ~a category.") (define xmid "

~a

\n ~a


To donate via Paypal, click on the donate button



back to main sponsor page
") (define species-lst (sort (list "cat" "pig" "goat" "tortoise" "chicken" "donkey" "rabbit" "deer" "duck" "peahen" "dog" "goose") stringstr v) (vector (number->string (vector-ref v 0)) (vector-ref v 1) (vector-ref v 2))) ;get names pky by species from db as list of nam pky (define (itms-by-species species) (let* ((itms (map n1->str (query-rows cn "select pky,nam,dsc from sponsees where spe=$1 order by nam" species))) (amt (query-value cn "select amt from amounts where spe=$1" species)) (len-of-itms (length itms)) (num-of-xprs (ceiling (/ len-of-itms modval))) (itms-modulo (modulo len-of-itms modval)) (itms-padded (if (equal? itms-modulo 0) itms (append itms (make-list (- modval itms-modulo) itm-padder)))) (xpr-for-table (string-join (make-list num-of-xprs xrow) " ")) (itms-lst (flatten (map vector->list itms-padded))) (itms-str (apply format xpr-for-table itms-lst)) (tlecode (apply format xtle (list species amt))) (kwdcode (apply format xkwd (list species))) (dsccode (apply format xdsc (list species))) (midcode (apply format xmid (list tlecode itms-str))) (pgcode (apply format xtmpl (list tlecode kwdcode dsccode midcode)))) (display-to-file pgcode (string-append "spnpg_" species ".html") #:exists 'replace))) (define (gen-pages) (for-each itms-by-species species-lst)) ;a oneshot function for renaming the existing files (define (rn) (let ((itms (query-rows cn "select pky,nam from sponsees"))) (for-each (lambda (itm) (system (apply format "mv images/sp/~a.jpg images/sp/~a.jpg" (list (vector-ref itm 1) (vector-ref itm 0))))) itms))) (gen-pages)