Add typed Kotlin string parse helpers
ober
fac60b82834ffe3bf0fb259968bf96ef0e173acc
--- a/lib/jerboa/typed/checker.ss +++ b/lib/jerboa/typed/checker.ss @@ -448,6 +448,12 @@ (cons 'string-trim (make-typed-call-sig (list 'String) 'String '() 'jvm-string-trim '())) + (cons 'string-remove-prefix + (make-typed-call-sig (list 'String 'String) 'String '() + 'jvm-string-remove-prefix '())) + (cons 'string->int32-or-null + (make-typed-call-sig (list 'String) (list 'Nullable 'Int32) '() + 'jvm-string-to-int32-or-null '())) (cons 'string-replace-regex (make-typed-call-sig (list 'String 'String 'String) 'String '() 'jvm-string-replace-regex '())) --- a/lib/jerboa/typed/kotlin/lower.ss +++ b/lib/jerboa/typed/kotlin/lower.ss @@ -258,6 +258,10 @@ (make-kt-member-call (car args) 'uppercase '())] [(jvm-string-trim) (make-kt-member-call (car args) 'trim '())] + [(jvm-string-remove-prefix) + (make-kt-member-call (car args) 'removePrefix (cdr args))] + [(jvm-string-to-int32-or-null) + (make-kt-member-call (car args) 'toIntOrNull '())] [(jvm-string-replace-regex) (make-kt-member-call (car args) --- a/tests/test-typed-kotlin.ss +++ b/tests/test-typed-kotlin.ss @@ -628,6 +628,7 @@ (define ocr-string-form '(typed-library (sample typed ocrstrings) (export normalizeOcr compact shouldReplaceOcrLabel) + (type Int32) (def (normalizeOcr (value : String)) : String (string-replace-regex (string-trim @@ -641,6 +642,8 @@ (string-filter-letter-or-digit (string-lowercase value))) (def (encoded (value : String)) : String (url-encode-utf8 value)) + (def (idNumber (value : String)) : (Nullable Int32) + (string->int32-or-null (string-remove-prefix value "c"))) (def (shouldReplaceOcrLabel (label : String) (status : String) (notes : String)) : Bool (let ((text (string-trim label))) (if (string-blank? text) @@ -662,6 +665,10 @@ ".trim()") (test-contains "String filter letter-or-digit lowers to Kotlin filter lambda" ocr-string-kotlin "value.lowercase().filter({ ch -> ch.isLetterOrDigit() })") +(test-contains "String removePrefix lowers to Kotlin removePrefix" ocr-string-kotlin + "value.removePrefix(\"c\")") +(test-contains "String toIntOrNull lowers to Kotlin nullable Int" ocr-string-kotlin + ".toIntOrNull()") (test-contains "URL encode UTF-8 lowers to Java URLEncoder" ocr-string-kotlin "java.net.URLEncoder.encode(value, \"UTF-8\")") (test-contains "String endsWith lowers to Kotlin endsWith" ocr-string-kotlin