diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-06-28 23:27:47 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-06-29 01:08:54 +0200 |
commit | 88aab05e8de72ac07dc7639f9254cf8e727176ae (patch) | |
tree | 14b7599d61c31f4b7f3c629e931f52c82dc10875 | |
parent | Add parse-iso-datetime. (diff) | |
download | calp-88aab05e8de72ac07dc7639f9254cf8e727176ae.tar.gz calp-88aab05e8de72ac07dc7639f9254cf8e727176ae.tar.xz |
Add base64 utility functions.
-rw-r--r-- | module/output/types.scm | 6 | ||||
-rw-r--r-- | module/util/base64.scm | 12 | ||||
-rw-r--r-- | module/vcomponent/parse/types.scm | 5 |
3 files changed, 16 insertions, 7 deletions
diff --git a/module/output/types.scm b/module/output/types.scm index 08ac878a..22f3ca5b 100644 --- a/module/output/types.scm +++ b/module/output/types.scm @@ -4,13 +4,11 @@ :use-module (util exceptions) :use-module (util base64) :use-module (datetime) - :use-module (datetime util) - :use-module (rnrs io ports)) + :use-module (datetime util)) (define (write-binary _ value) - (bytevector->string (bytevector->base64 value) - (make-transcoder (latin-1-codec)))) + (bytevector->base64-string value)) (define (write-boolean _ value) (if value "TRUE" "FALSE")) diff --git a/module/util/base64.scm b/module/util/base64.scm index 2a49ba1e..148055c9 100644 --- a/module/util/base64.scm +++ b/module/util/base64.scm @@ -132,11 +132,23 @@ ret)) +;; string -> bv +(define-public (base64-string->bytevector string) + (base64->bytevector + (string->bytevector string (make-transcoder (latin-1-codec))))) + +;; bv -> string +(define-public (bytevector->base64-string bv) + (bytevector->string (bytevector->base64 bv) + (make-transcoder (latin-1-codec)))) + +;; string -> string (define*-public (base64encode string optional: (transcoder (native-transcoder))) (bytevector->string (bytevector->base64 (string->bytevector string transcoder)) (make-transcoder (latin-1-codec)))) +;; string -> string (define*-public (base64decode string optional: (transcoder (native-transcoder))) (bytevector->string (base64->bytevector diff --git a/module/vcomponent/parse/types.scm b/module/vcomponent/parse/types.scm index e9c5e811..552aa191 100644 --- a/module/vcomponent/parse/types.scm +++ b/module/vcomponent/parse/types.scm @@ -2,7 +2,6 @@ :use-module (util) :use-module (util exceptions) :use-module (util base64) - :use-module (rnrs io ports) :use-module (datetime) :use-module (srfi srfi-9 gnu) ) @@ -13,8 +12,8 @@ (unless (string=? "BASE64" (hashq-ref props 'ENCODING)) (warning "Binary field not marked ENCODING=BASE64")) - (base64->bytevector - (string->bytevector value (make-transcoder (latin-1-codec))))) + ;; TODO whitespace in binary? + (base64-string->bytevector value)) ;; BOOLEAN (define (parse-boolean props value) |