aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--formatters.lisp4
-rw-r--r--json-template.lisp6
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