refactoring by skill
This commit is contained in:
+25
-1
@@ -17,20 +17,44 @@
|
||||
|
||||
;; Concept ids are stored as plain UUID strings. Validation accepts uppercase
|
||||
;; input, while normalization always produces the canonical lowercase form.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; goal : Check whether a value is a plain UUID concept identifier.
|
||||
; pre : value is any Racket value.
|
||||
; post : No state is changed.
|
||||
; result : #t when value is a UUID string, otherwise #f.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(define (concept-id? value)
|
||||
(uuid-string? value))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; goal : Convert a supported concept identifier to its canonical form.
|
||||
; pre : value is any Racket value.
|
||||
; post : No state is changed.
|
||||
; result : A lowercase UUID string, or #f when value is not recognized.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(define (normalize-concept-id value)
|
||||
(cond
|
||||
[(uuid-string? value) (string-downcase value)]
|
||||
[(and (string? value)
|
||||
(regexp-match prefixed-uuid-concept-id-pattern value))
|
||||
=> (lambda (match) (string-downcase (cadr match)))]
|
||||
=> (λ (match) (string-downcase (cadr match)))]
|
||||
[else #f]))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; goal : Create a new canonical concept identifier.
|
||||
; pre : none.
|
||||
; post : No persistent state is changed.
|
||||
; result : A freshly generated lowercase UUID string.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(define (new-concept-id)
|
||||
(uuid-string))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; goal : Normalize a concept identifier or create a replacement.
|
||||
; pre : value is any Racket value.
|
||||
; post : No persistent state is changed.
|
||||
; result : The normalized identifier, or a fresh UUID when value is invalid.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(define (normalized-or-new-concept-id value)
|
||||
(or (normalize-concept-id value)
|
||||
(new-concept-id)))
|
||||
|
||||
Reference in New Issue
Block a user