diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2011-03-10 16:54:53 +0100 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2011-03-10 16:54:53 +0100 |
commit | db0b770d2b149bdbab53c66190dd9c57d06ce414 (patch) | |
tree | 13496c448188cd365ac7107cfac7f5d9407e1c8e | |
parent | 3505099eef1e8eb264f25e740c6ee22a4f28c7c7 (diff) |
Be more lenient regarding non-string and non-list variables.
-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 |