diff options
-rw-r--r-- | formatters.lisp | 4 | ||||
-rw-r--r-- | json-template.lisp | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/formatters.lisp b/formatters.lisp index a3a2129..e5bf333 100644 --- a/formatters.lisp +++ b/formatters.lisp @@ -22,6 +22,8 @@ (let* ((escapees (mapcar #'car replacements)) (escapee-p (lambda (x) (member x escapees :test #'char=)))) (lambda (string) + (unless (stringp string) + (setq string (format nil "~A" string))) (with-output-to-string (out) (loop with position = 0 for escapee-pos = (position-if escapee-p string :start position) @@ -35,6 +37,8 @@ (defun escape-for-uri (string) + (unless (stringp string) + (setq string (format nil "~A" string))) (with-output-to-string (out) (map 'list (lambda (char) diff --git a/json-template.lisp b/json-template.lisp index 9e36a42..d4b768d 100644 --- a/json-template.lisp +++ b/json-template.lisp @@ -47,8 +47,8 @@ (list #\. #\#)))) until (null terminator))) -(defun parse-template-string (stream) - (parse-raw-tokens (tokenize-template-string stream))) +(defun parse-template-string (string) + (parse-raw-tokens (tokenize-template-string string))) (defun parse-directive (string) (let* ((space1 (position #\Space string)) @@ -128,6 +128,8 @@ (defun getcontext (context key &aux (result context)) (dolist (key-component key result) + (when (atom result) + (return-from getcontext nil)) (setq result (getf result key-component |