diff options
author | Arun Isaac | 2024-09-12 13:00:23 +0100 |
---|---|---|
committer | Arun Isaac | 2024-09-12 17:08:56 +0100 |
commit | bfcb8e7cf94529ab626d6d4ee544c6afeaff6ee5 (patch) | |
tree | 502375097fc46aba4c960ff9d483ccf6cf118eb5 | |
parent | a7bdaa2b4814e7f77a08cec12b10fb0d4d58cab3 (diff) | |
download | ravanan-bfcb8e7cf94529ab626d6d4ee544c6afeaff6ee5.tar.gz ravanan-bfcb8e7cf94529ab626d6d4ee544c6afeaff6ee5.tar.lz ravanan-bfcb8e7cf94529ab626d6d4ee544c6afeaff6ee5.zip |
reader: Refactor type normalization into separate function.
* ravanan/reader.scm (normalize-formals): Refactor type normalization
into ...
[normalize-type]: ... new function.
-rw-r--r-- | ravanan/reader.scm | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/ravanan/reader.scm b/ravanan/reader.scm index 1e3505c..afcf552 100644 --- a/ravanan/reader.scm +++ b/ravanan/reader.scm @@ -76,22 +76,24 @@ each association list of the returned vector of association lists. If alist))) (define (normalize-formals parameters) + (define (normalize-type type) + (cond + ((not (string? type)) type) + ((string-suffix? "?" type) + (vector (substring type 0 (- (string-length type) + (string-length "?"))) + 'null)) + ((string-suffix? "[]" type) + `(("type" . "array") + ("items" . ,(substring type 0 (- (string-length type) + (string-length "[]")))))) + (else type))) + (vector-map (lambda (parameter) ;; Normalize optional and array types. (assoc-set parameter - (cons "type" - (let ((type (assoc-ref parameter "type"))) - (cond - ((not (string? type)) type) - ((string-suffix? "?" type) - (vector (substring type 0 (- (string-length type) - (string-length "?"))) - 'null)) - ((string-suffix? "[]" type) - `(("type" . "array") - ("items" . ,(substring type 0 (- (string-length type) - (string-length "[]")))))) - (else type)))))) + (cons "type" + (normalize-type (assoc-ref parameter "type"))))) ;; Normalize formals to a vector. (coerce-alist->vector parameters "id" "type"))) |