;;; ISO 8859-1 table maker ;;; Written by Damian Yerrick ;;; Released into the public domain (define hexdigits "0123456789ABCDEF") (define print-iso-8859-1-chart (let ((ascii-line (lambda (init-ascii fp) ;; table row header (display "<tr><th>" fp) (display (string-ref hexdigits (floor (/ init-ascii 16))) fp) (display "x</th>" fp) (let loop ((c init-ascii) (end (+ init-ascii 16))) (display "<td>" fp) ;; print the character, escaping SGML-special and non-ASCII characters (cond ((= c 60) (display "<" fp)) ((= c 62) (display ">" fp)) ((= c 38) (display "&" fp)) ((>= c 128) (display "&#" fp) (display c fp) (display ";" fp)) (else (write-char (integer->char c) fp))) (display "</td>" fp) (if (< (+ c 1) end) (loop (+ c 1) end))) (display "</tr>" fp) (newline fp) ))) (lambda fpl (let ((fp (if (null? fpl) (current-output-port) (car fpl)))) ;; print column headings (display "<table><tr><th></th>") (let loop ((c 0)) (display "<th>x" fp) (write-char (string-ref hexdigits c) fp) (display "</th>" fp) (if (< (+ c 1) 16) (loop (+ c 1)))) (display "</tr>" fp) (newline fp) ;; print the body of the table (let loop ((c 32)) (ascii-line c fp) (cond ((= c 112) (loop (+ c 48))) ;skip 80 to 9f for now ((< (+ c 16) 256) (loop (+ c 16))))) (display "</table>" fp) (newline fp)))))