about summary refs log tree commit diff
path: root/dump
diff options
context:
space:
mode:
authorMunyoki Kilyungi2023-07-26 13:32:16 +0300
committerMunyoki Kilyungi2023-07-31 13:10:14 +0300
commit398d5d9a59ae5cb6f74b415eb343a2c6eeadb440 (patch)
treef6cd5bd4752a34fb2ec3c3893554ce1650bbe17b /dump
parent3fc9108643add02ddc945b9d4f63a9e50e5e5d44 (diff)
downloadgn-transform-databases-398d5d9a59ae5cb6f74b415eb343a2c6eeadb440.tar.gz
Add new method "string->binomial-name"
* dump/triples.scm: Export string->binomial-name.
(string->binomial-name): New procedure.

Signed-off-by: Munyoki Kilyungi <me@bonfacemunyoki.com>
Diffstat (limited to 'dump')
-rw-r--r--dump/triples.scm19
1 files changed, 18 insertions, 1 deletions
diff --git a/dump/triples.scm b/dump/triples.scm
index 2b43d68..0206ba3 100644
--- a/dump/triples.scm
+++ b/dump/triples.scm
@@ -7,7 +7,8 @@
             prefix
             triple
             scm->triples
-            annotate-field))
+            annotate-field
+            string->binomial-name))
 
 (define (annotate-field field schema)
   (let ([schema (cond ((symbol? schema)
@@ -89,3 +90,19 @@ characters with an underscore and prefixing with gn:PREFIX."
                       (else object))
                  (fn id predicate object))))
             alist))
+
+(define (string->binomial-name name)
+  (let ((binomial?
+         (string-match
+          "\\\(.+\\)"
+          name)))
+    (string->identifier
+     ""
+     (if binomial?
+         (regexp-substitute/global
+          #f "[^[:space:]A-Za-z0-9:]"
+          (match:substring binomial?)
+          'pre "" 'post)
+         name)
+     #:separator ""
+     #:proc string-capitalize-first)))