diff --git a/doc/d-utils.md b/doc/d-utils.md index 6b3641a..fdf2ad2 100644 --- a/doc/d-utils.md +++ b/doc/d-utils.md @@ -257,24 +257,6 @@ pair consisting of symbol created by interning the string of non-whitespace characters before the first whitespace character and the string with the rest of the line. -## util-list [module] - - (import util-list) - -This module implements basic list functionality which is common in -most scheme implementations. - -### filter [procedure] - - (filter pred? - lst) - -* ```pred?``` - procedure accepting any value and returning #t or #f -* ```lst``` - list to be filtered - -Returns a list containing only elements matching given ```pred?``` -predicate. - ## util-proc [module] (import util-proc) @@ -428,12 +410,14 @@ sent to the address stored within. (send-mail body-lines #:from (from #f) #:to to - #:subject subject) + #:subject subject + #:headers (headers (quote ()))) * ```body-lines``` - lines of the email * ```from``` - email address from string * ```to``` - email address to string * ```subject``` - email subject string +* ```headers``` - list of headers to add Sends email using mail(1) command. The arguments ```#:to``` and ```#:subject``` are mandatory. Argument ```#:from``` is optional. diff --git a/install-eggs.sh b/install-eggs.sh index 1f2c4f7..85dada4 100644 --- a/install-eggs.sh +++ b/install-eggs.sh @@ -54,6 +54,7 @@ trap chicken_cleanup INT QUIT # Install required eggs chicken_install sqlite3 +chicken_install srfi-1 # Normal termination cleanup chicken_cleanup diff --git a/src/Makefile b/src/Makefile index ee4f928..0615ce5 100644 --- a/src/Makefile +++ b/src/Makefile @@ -56,28 +56,26 @@ HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \ util-git.o cal-day.o util-stdout.o cal-format.o table.o \ sgr-list.o sgr-block.o table-processor.o table-border.o \ table-style.o sgr-state.o util-utf8.o sgr-cell.o \ - template-list-expander.o box-drawing.o util-list.o \ - export-web-static.o util-dir.o dokuwiki.o racket-kwargs.o \ - duck.o util-bst.o util-bst-bdict.o util-bst-ldict.o \ - util-bst-lset.o mailman2.o mailman-common.o mailman3.o \ - mailman3-sql.o + template-list-expander.o box-drawing.o export-web-static.o \ + util-dir.o dokuwiki.o racket-kwargs.o duck.o util-bst.o \ + util-bst-bdict.o util-bst-ldict.o util-bst-lset.o mailman2.o \ + mailman-common.o mailman3.o mailman3-sql.o GENDOC-SOURCES=gendoc.scm duck-extract.import.scm \ util-time.import.scm util-csv.import.scm util-git.import.scm \ util-io.import.scm util-stdout.import.scm \ - util-parser.import.scm util-list.import.scm \ - util-proc.import.scm util-format.import.scm \ - util-tag.import.scm util-string.import.scm \ - util-bst.import.scm util-bst-bdict.import.scm \ - util-bst-ldict.import.scm util-dir.import.scm \ - util-utf8.import.scm + util-parser.import.scm util-proc.import.scm \ + util-format.import.scm util-tag.import.scm \ + util-string.import.scm util-bst.import.scm \ + util-bst-bdict.import.scm util-bst-ldict.import.scm \ + util-dir.import.scm util-utf8.import.scm GENDOC-OBJS=gendoc.o duck-extract.o util-time.o util-csv.o util-io.o \ progress.o testing.o util-proc.o util-git.o util-io.o \ - util-stdout.o util-parser.o util-list.o util-proc.o \ - util-format.o racket-kwargs.o util-bst-ldict.o util-tag.o \ - duck.o util-string.o util-bst.o util-bst-bdict.o \ - util-bst-ldict.o util-dir.o util-utf8.o + util-stdout.o util-parser.o util-proc.o util-format.o \ + racket-kwargs.o util-bst-ldict.o util-tag.o duck.o \ + util-string.o util-bst.o util-bst-bdict.o util-bst-ldict.o \ + util-dir.o util-utf8.o .PHONY: imports imports: $(HACKERBASE-DEPS) @@ -141,13 +139,13 @@ LISTING-SOURCES=listing.scm testing.import.scm ansi.import.scm \ listing.o: listing.import.scm listing.import.scm: $(LISTING-SOURCES) -ANSI-SOURCES=ansi.scm testing.import.scm util-list.import.scm +ANSI-SOURCES=ansi.scm testing.import.scm ansi.o: ansi.import.scm ansi.import.scm: $(ANSI-SOURCES) COMMAND-LINE-SOURCES=command-line.scm testing.import.scm \ - util-proc.import.scm util-list.import.scm + util-proc.import.scm command-line.o: command-line.import.scm command-line.import.scm: $(COMMAND-LINE-SOURCES) @@ -157,13 +155,12 @@ MBASE-SOURCES=mbase.scm testing.import.scm util-bst-ldict.import.scm \ cal-period.import.scm cal-month.import.scm \ configuration.import.scm progress.import.scm \ mbase-dir.import.scm util-tag.import.scm \ - racket-kwargs.import.scm util-bst-bdict.import.scm \ - util-list.import.scm + racket-kwargs.import.scm util-bst-bdict.import.scm mbase.o: mbase.import.scm mbase.import.scm: $(MBASE-SOURCES) -PRIMES-SOURCES=primes.scm testing.import.scm util-list.import.scm +PRIMES-SOURCES=primes.scm testing.import.scm primes.o: primes.import.scm primes.import.scm: $(PRIMES-SOURCES) @@ -171,8 +168,7 @@ primes.import.scm: $(PRIMES-SOURCES) BRMEMBER-SOURCES=brmember.scm util-bst-ldict.import.scm \ cal-period.import.scm testing.import.scm cal-month.import.scm \ configuration.import.scm primes.import.scm \ - bank-account.import.scm util-tag.import.scm \ - util-list.import.scm + bank-account.import.scm util-tag.import.scm brmember.o: brmember.import.scm brmember.import.scm: $(BRMEMBER-SOURCES) @@ -197,8 +193,7 @@ BRMEMBER-PARSER-SOURCES=brmember-parser.scm brmember.import.scm \ testing.import.scm util-bst-ldict.import.scm \ cal-month.import.scm cal-period.import.scm \ configuration.import.scm util-string.import.scm \ - util-parser.import.scm cal-day.import.scm \ - util-list.import.scm + util-parser.import.scm cal-day.import.scm brmember-parser.o: brmember-parser.import.scm brmember-parser.import.scm: $(BRMEMBER-PARSER-SOURCES) @@ -210,23 +205,21 @@ MEMBERS-PRINT-SOURCES=members-print.scm util-bst-ldict.import.scm \ bank-account.import.scm members-fees.import.scm \ members-payments.import.scm brmember-format.import.scm \ specification.import.scm cal-format.import.scm \ - util-git.import.scm util-list.import.scm \ - racket-kwargs.import.scm + util-git.import.scm racket-kwargs.import.scm members-print.o: members-print.import.scm members-print.import.scm: $(MEMBERS-PRINT-SOURCES) MEMBERS-FEES-SOURCES=members-fees.scm configuration.import.scm \ brmember.import.scm cal-month.import.scm table.import.scm \ - mbase.import.scm specification.import.scm \ - util-list.import.scm + mbase.import.scm specification.import.scm members-fees.o: members-fees.import.scm members-fees.import.scm: $(MEMBERS-FEES-SOURCES) MBASE-DIR-SOURCES=mbase-dir.scm testing.import.scm \ util-bst-ldict.import.scm brmember.import.scm \ - brmember-parser.import.scm util-list.import.scm + brmember-parser.import.scm mbase-dir.o: mbase-dir.import.scm mbase-dir.import.scm: $(MBASE-DIR-SOURCES) @@ -252,7 +245,7 @@ MEMBERS-PAYMENTS-SOURCES=members-payments.scm bank-account.import.scm \ util-bst-ldict.import.scm members-fees.import.scm \ cal-period.import.scm configuration.import.scm \ progress.import.scm bank-fio.import.scm \ - specification.import.scm util-list.import.scm + specification.import.scm members-payments.o: members-payments.import.scm members-payments.import.scm: $(MEMBERS-PAYMENTS-SOURCES) @@ -262,9 +255,9 @@ ENVIRONMENT-SOURCES=environment.scm ansi.import.scm environment.o: environment.import.scm environment.import.scm: $(ENVIRONMENT-SOURCES) -MAILMAN2-SOURCES=mailman2.scm util-bst-lset.import.scm \ - util-io.import.scm util-list.import.scm \ - mailman-common.import.scm configuration.import.scm +MAILMAN2-SOURCES=mailman2.scm util-bst-lset.import.scm \ + util-io.import.scm mailman-common.import.scm \ + configuration.import.scm mailman2.o: mailman2.import.scm mailman2.import.scm: $(MAILMAN2-SOURCES) @@ -473,11 +466,6 @@ BOX-DRAWING-SOURCES=box-drawing.scm util-utf8.import.scm \ box-drawing.o: box-drawing.import.scm box-drawing.import.scm: $(BOX-DRAWING-SOURCES) -UTIL-LIST-SOURCES=util-list.scm testing.import.scm duck.import.scm - -util-list.o: util-list.import.scm -util-list.import.scm: $(UTIL-LIST-SOURCES) - EXPORT-WEB-STATIC-SOURCES=export-web-static.scm brmember.import.scm \ util-dir.import.scm mbase.import.scm \ members-payments.import.scm cal-day.import.scm \ @@ -527,8 +515,7 @@ util-bst-ldict.o: util-bst-ldict.import.scm util-bst-ldict.import.scm: $(UTIL-BST-LDICT-SOURCES) UTIL-BST-LSET-SOURCES=util-bst-lset.scm util-bst.import.scm \ - racket-kwargs.import.scm util-bst-ldict.import.scm \ - util-list.import.scm + racket-kwargs.import.scm util-bst-ldict.import.scm util-bst-lset.o: util-bst-lset.import.scm util-bst-lset.import.scm: $(UTIL-BST-LSET-SOURCES) @@ -547,8 +534,7 @@ mailman-common.o: mailman-common.import.scm mailman-common.import.scm: $(MAILMAN-COMMON-SOURCES) MAILMAN3-SOURCES=mailman3.scm configuration.import.scm \ - util-io.import.scm mailman3-sql.import.scm \ - util-list.import.scm + util-io.import.scm mailman3-sql.import.scm mailman3.o: mailman3.import.scm mailman3.import.scm: $(MAILMAN3-SOURCES) diff --git a/src/ansi.scm b/src/ansi.scm index d59e8bc..0d94e74 100644 --- a/src/ansi.scm +++ b/src/ansi.scm @@ -50,7 +50,7 @@ (chicken string) (chicken irregex) (chicken keyword) - util-list + srfi-1 testing) ;; Only basic ANSI colors and bold attribute support. diff --git a/src/brmember-parser.scm b/src/brmember-parser.scm index bcfb988..8068404 100644 --- a/src/brmember-parser.scm +++ b/src/brmember-parser.scm @@ -36,7 +36,7 @@ (chicken io) (chicken irregex) (chicken string) - util-list + srfi-1 brmember testing util-bst-ldict diff --git a/src/brmember.scm b/src/brmember.scm index 97651cd..8603e36 100644 --- a/src/brmember.scm +++ b/src/brmember.scm @@ -94,7 +94,7 @@ (chicken irregex) (chicken string) (chicken format) - util-list + srfi-1 util-bst-ldict testing cal-month diff --git a/src/command-line.scm b/src/command-line.scm index 8bc5e65..6d66d7e 100644 --- a/src/command-line.scm +++ b/src/command-line.scm @@ -40,7 +40,7 @@ (chicken base) (chicken process-context) (chicken format) - util-list + srfi-1 testing util-proc) diff --git a/src/gendoc.scm b/src/gendoc.scm index cf91230..e5afddc 100644 --- a/src/gendoc.scm +++ b/src/gendoc.scm @@ -26,7 +26,6 @@ util-io util-stdout util-parser - util-list util-proc util-format util-tag diff --git a/src/mailman2.scm b/src/mailman2.scm index e5d7c24..5825165 100644 --- a/src/mailman2.scm +++ b/src/mailman2.scm @@ -41,7 +41,7 @@ (chicken string) (chicken sort) (chicken format) - util-list + srfi-1 util-bst-lset util-io mailman-common diff --git a/src/mailman3.scm b/src/mailman3.scm index 622860f..571398d 100644 --- a/src/mailman3.scm +++ b/src/mailman3.scm @@ -42,7 +42,7 @@ (chicken format) configuration util-io - util-list + srfi-1 mailman3-sql) ;; Just a convenient converter diff --git a/src/mbase-dir.scm b/src/mbase-dir.scm index 78643ea..7c7e51c 100644 --- a/src/mbase-dir.scm +++ b/src/mbase-dir.scm @@ -40,7 +40,7 @@ (chicken file) (chicken format) (chicken irregex) - util-list + srfi-1 testing util-bst-ldict brmember diff --git a/src/mbase.scm b/src/mbase.scm index 112dcb0..11ed2d5 100644 --- a/src/mbase.scm +++ b/src/mbase.scm @@ -69,7 +69,7 @@ (chicken string) (chicken random) (chicken sort) - util-list + srfi-1 testing util-bst-ldict primes diff --git a/src/members-fees.scm b/src/members-fees.scm index c0a16aa..1d92ab9 100644 --- a/src/members-fees.scm +++ b/src/members-fees.scm @@ -46,7 +46,7 @@ (chicken base) (chicken format) (chicken sort) - util-list + srfi-1 configuration brmember cal-month diff --git a/src/members-payments.scm b/src/members-payments.scm index a87d770..6f8731d 100644 --- a/src/members-payments.scm +++ b/src/members-payments.scm @@ -48,7 +48,7 @@ (chicken process-context) (chicken pathname) (chicken condition) - util-list + srfi-1 bank-account brmember mbase diff --git a/src/members-print.scm b/src/members-print.scm index e97a555..3fdf736 100644 --- a/src/members-print.scm +++ b/src/members-print.scm @@ -48,7 +48,7 @@ (chicken string) (chicken sort) (chicken format) - util-list + srfi-1 util-bst-ldict brmember cal-month diff --git a/src/primes.scm b/src/primes.scm index 98e2920..74c26db 100644 --- a/src/primes.scm +++ b/src/primes.scm @@ -35,7 +35,7 @@ (import scheme (chicken base) - util-list + srfi-1 testing) ;; Checks whether given number is prime by checking the remainder of diff --git a/src/util-bst-lset.scm b/src/util-bst-lset.scm index b8d72ff..48bf226 100644 --- a/src/util-bst-lset.scm +++ b/src/util-bst-lset.scm @@ -25,7 +25,7 @@ util-bst racket-kwargs util-bst-ldict - util-list) + srfi-1) (define* (make-lset (equality? equal?)) (make-bst 'lset equality? ldict -;; -;; Permission to use, copy, modify, and/or distribute this software -;; for any purpose with or without fee is hereby granted, provided -;; that the above copyright notice and this permission notice appear -;; in all copies. -;; -;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE -;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR -;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, -;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -;; - -(declare (unit util-list)) - -(import duck) - -(module* - util-list - #:doc ("This module implements basic list functionality which is common in -most scheme implementations.") - ( - filter - util-list-tests! - ) - - (import scheme - (chicken base) - (chicken io) - (chicken process) - testing) - - (define/doc (filter pred? lst) - ("* ```pred?``` - procedure accepting any value and returning #t or #f -* ```lst``` - list to be filtered - -Returns a list containing only elements matching given ```pred?``` -predicate.") - (let loop ((lst lst) - (res '())) - (if (null? lst) - (reverse res) - (if (pred? (car lst)) - (loop (cdr lst) - (cons (car lst) res)) - (loop (cdr lst) - res))))) - - ;; Performs utils module self-tests. - (define (util-list-tests!) - (run-tests - util-list - (test-equal? filter (filter odd? '(1 2 3 4)) '(1 3)) - (test-equal? filter (filter odd? '(2 4)) '()) - )) - - )