summaryrefslogtreecommitdiff
path: root/src/serializing.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/serializing.lisp')
-rw-r--r--src/serializing.lisp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/serializing.lisp b/src/serializing.lisp
index e9c46f6..b40ac75 100644
--- a/src/serializing.lisp
+++ b/src/serializing.lisp
@@ -3,18 +3,21 @@
3(defpackage :ukkoclot/src/serializing 3(defpackage :ukkoclot/src/serializing
4 (:use :c2cl :iterate) 4 (:use :c2cl :iterate)
5 (:import-from :log) 5 (:import-from :log)
6 (:import-from :serapeum :->)
6 (:import-from :str) 7 (:import-from :str)
7 (:local-nicknames 8 (:local-nicknames
8 (:jzon :com.inuoe.jzon)) 9 (:jzon :com.inuoe.jzon))
9 (:export :fixup-args :fixup-value :parse-value :try-parse-value)) 10 (:export :fixup-args :fixup-value :parse-value :try-parse-value))
10(in-package :ukkoclot/src/serializing) 11(in-package :ukkoclot/src/serializing)
11 12
13;; TODO: Better types, input is an (alist t t) output is an (alist string t)
14(-> fixup-args (list) list)
12(defun fixup-args (args) 15(defun fixup-args (args)
13 (iter (for (key . value) in args) 16 (iter (for (key . value) in args)
14 (collect (cons (str:snake-case key) (fixup-value value))))) 17 (collect (cons (str:snake-case key) (fixup-value value)))))
15 18
16(defgeneric fixup-value (value) 19(defgeneric fixup-value (value)
17 (:documentation "Fixup outgoing *top-level* `value' before passing it to telegram.") 20 (:documentation "Fixup outgoing /top-level/ `value' before passing it to telegram.")
18 (:method (value) 21 (:method (value)
19 (jzon:stringify value :pretty *print-pretty*)) 22 (jzon:stringify value :pretty *print-pretty*))
20 (:method ((value null)) 23 (:method ((value null))
@@ -61,6 +64,7 @@
61 (t 64 (t
62 (error "I don't know how to parse complex type ~A!" type)))) 65 (error "I don't know how to parse complex type ~A!" type))))
63 66
67(-> try-parse-value (t t) (values boolean t &optional))
64(defun try-parse-value (type json) 68(defun try-parse-value (type json)
65 (handler-case (values t (parse-value type json)) 69 (handler-case (values t (parse-value type json))
66 (error () (values nil nil)))) 70 (error () (values nil nil))))