about summary refs log tree commit diff
path: root/transform
diff options
context:
space:
mode:
Diffstat (limited to 'transform')
-rw-r--r--transform/strings.scm31
1 files changed, 25 insertions, 6 deletions
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