You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#! /usr/bin/env sh
|
|
|
|
exec guile -e '(@ (word-counter) main)' -s "$0" "$@"
|
|
|
|
!#
|
|
|
|
|
|
|
|
(define-module (word-counter)
|
|
|
|
#:use-module (bible-tools)
|
|
|
|
#:use-module (count-words)
|
|
|
|
#:use-module (srfi srfi-1)
|
|
|
|
#:use-module (srfi srfi-26)
|
|
|
|
#:export (main))
|
|
|
|
|
|
|
|
(define (show-meta txt)
|
|
|
|
(define (tabs w) (if (< (string-length (car w)) 7) "\t\t" "\t"))
|
|
|
|
(define (to-str w) (string-append (car w) ":" (tabs w)
|
|
|
|
(number->string (cdr w)) "\n"))
|
|
|
|
(for-each (compose display to-str) (count-words (map text txt))))
|
|
|
|
|
|
|
|
(define (help)
|
|
|
|
(display "Usage: count-words [book] [-c chapter] [-h] [-v]\n")
|
|
|
|
(display "\t-c chapter count the words in this chapter\n")
|
|
|
|
(display "\t-h display this help message\n")
|
|
|
|
(display "\t-v display the current version\n"))
|
|
|
|
|
|
|
|
(define (version)
|
|
|
|
(display "count-words v1.0.0\n"))
|
|
|
|
|
|
|
|
(define (main args)
|
|
|
|
(define flag? (cut member <> args))
|
|
|
|
(define get (compose cadr flag?))
|
|
|
|
(define-syntax conf
|
|
|
|
(syntax-rules (else)
|
|
|
|
((_ (f e)... (else g)) (cond ((flag? f) e)... (else g)))))
|
|
|
|
(with-bible "jantzen"
|
|
|
|
(conf ("-h" (help))
|
|
|
|
("-v" (version))
|
|
|
|
("-c"
|
|
|
|
(call-with-chapter (cadr args) (get "-c") show-meta))
|
|
|
|
(else (call-with-book (cadr args) show-meta)))))
|