#! /usr/bin/guile \ -e main -s !# (use-modules (sxml simple)) (define (format-article-filename file) (let ((file-length (string-length file))) (string-append (substring file 0 (- file-length 4)) ".txt"))) (define (get-gophermap-item article) (let ((title (cadr (list-ref article 0))) (pub-date (cadr (list-ref article 4))) (file (cadr (list-ref article 6)))) (string-append "0" pub-date " - " title "\t" (format-article-filename file)))) (define (make-gophermap articles) (call-with-output-file "gophermap" (lambda (fp) (for-each (lambda (article) (if (list? article) (display (get-gophermap-item (cddr article)) fp) (newline fp))) (cdr (cadr articles)))))) (define (make-blog-file article) (let ((file (cadr (list-ref article 6)))) (system (string-append "html2text " file " > " (format-article-filename file))))) (define (make-blogs articles) (for-each (lambda (article) (if (list? article) (make-blog-file (cddr article)))) (cdr (cadr articles)))) (define (generate-phlog) (call-with-input-file "articles.xml" (lambda (fp) (let ((articles (xml->sxml fp))) (make-gophermap articles) (make-blogs articles))))) (define (main args) (generate-phlog))