From 27a1a3522be5dbdcd952dab6742a021644c55c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 19:08:47 +0100 Subject: [PATCH] Move capitalize to util-string. --- src/hackerbase.scm | 11 ++--------- src/util-string.scm | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index 6a64884..4ca9264 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -282,13 +282,6 @@ (print " " (car keys) ": " (length (ldict-ref status (car keys))))) (loop (cdr keys))))))) -(define (capitalize s) - (let ((l (string->list s))) - (list->string - (cons - (char-upcase (car l)) - (map char-downcase (cdr l)))))) - (define* (check-mailing-list mls name #:pred? (pred? #f)) (define ml (find-mailman-list mls name)) (let-values (((missing surplus) @@ -301,9 +294,9 @@ (print "Skipping ML check - not loaded") (if (and (null? missing) (null? surplus)) - (print (format "~a mailing list membership in sync." (capitalize name))) + (print (format "~a mailing list membership in sync." (string-capitalize name))) (let () - (print (format "~a mailing list:" (capitalize name))) + (print (format "~a mailing list:" (string-capitalize name))) (when (not (null? missing)) (print " Missing: " missing)) (when (not (null? surplus)) diff --git a/src/util-string.scm b/src/util-string.scm index d9914b9..2a17d7a 100644 --- a/src/util-string.scm +++ b/src/util-string.scm @@ -37,6 +37,8 @@ string-upcase + string-capitalize + string-tests! ) @@ -100,6 +102,18 @@ using ```char-upcase```. Does not work with UTF-8.") (map char-upcase (string->list str)))) + (define/doc (string-capitalize str) + ("* ```str``` - arbitrary string + +Returns the ```str``` with the first character converted to upper case +using ```char-upcase``` and the remainder converted to lower case +using ```char-downcase```. Does not work with UTF-8.") + (let ((l (string->list str))) + (list->string + (cons + (char-upcase (car l)) + (map char-downcase (cdr l)))))) + ;; Performs utils module self-tests. (define (string-tests!) (run-tests @@ -122,6 +136,12 @@ using ```char-upcase```. Does not work with UTF-8.") (test-equal? string-upcase (string-upcase "asdFGH") "ASDFGH") + (test-equal? string-capitalize + (string-capitalize "asdf") + "Asdf") + (test-equal? string-capitalize + (string-capitalize "ASDF") + "Asdf") )) )