From d406077de178ac74776e998b70be323baa9a8384 Mon Sep 17 00:00:00 2001 From: Munyoki Kilyungi Date: Wed, 28 Jan 2026 19:52:42 +0300 Subject: Move fix-email-id/investigator-attributes->id to string.scm * examples/dataset-metadata.scm (fix-email-id, investigator-attributes->id): Move this ... * transform/strings.scm: here. Signed-off-by: Munyoki Kilyungi --- transform/strings.scm | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) (limited to 'transform') diff --git a/transform/strings.scm b/transform/strings.scm index aba554a..7544399 100644 --- a/transform/strings.scm +++ b/transform/strings.scm @@ -15,15 +15,34 @@ snake->lower-camel lower-case-and-replace-spaces string-capitalize-first - normalize-string-field)) + normalize-string-field + fix-email-id + investigator-attributes->id)) + +;; One email ID in the Investigators table has spaces in it. This +;; function fixes that. +(define (fix-email-id email) + (string-delete #\space email)) + +(define (investigator-attributes->id first-name last-name email) + ;; There is just one record corresponding to "Evan Williams" which + ;; does not have an email ID. To accommodate that record, we + ;; construct the investigator ID from not just the email ID, but + ;; also the first and the last names. It would be preferable to just + ;; find Evan Williams' email ID and insert it into the database. + (string->identifier "investigator" + (string-join + (list first-name last-name (fix-email-id email)) + "_") + #:separator "_")) (define (lower-case-and-replace-spaces str) (string-map - (lambda (c) - (if (char=? c #\space) - #\- ; replace space with hyphen - c)) ; convert character to lower case - (string-downcase str))) + (lambda (c) + (if (char=? c #\space) + #\- ; replace space with hyphen + c)) ; convert character to lower case + (string-downcase str))) (define (time-unix->string seconds . maybe-format) "Given an integer saying the number of seconds since the Unix -- cgit 1.4.1