aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2011-03-10 16:54:53 +0100
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2011-03-10 16:54:53 +0100
commitdb0b770d2b149bdbab53c66190dd9c57d06ce414 (patch)
tree13496c448188cd365ac7107cfac7f5d9407e1c8e
parent3505099eef1e8eb264f25e740c6ee22a4f28c7c7 (diff)
Be more lenient regarding non-string and non-list variables.
-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