fix: better input validation

This commit is contained in:
Joao Tavora 2013-11-02 00:59:31 +00:00
parent db38009ee8
commit f32e4fe2ea
2 changed files with 12 additions and 5 deletions

View File

@ -218,7 +218,7 @@
;; mirrors
;;
(should (equal (snippet--canonicalize-form '(&mirror 1))
'(&mirror 1 (&transform field-text))))
'(&mirror 1 (&transform field-string))))
(should (equal (snippet--canonicalize-form '(&mirror 1 (foo)))
'(&mirror 1 (&transform (foo)))))
(should (equal (snippet--canonicalize-form '(&mirror 1 (&transform (foo))))
@ -238,4 +238,6 @@
;; fields
(should-error (snippet--canonicalize-form '(&field 1 (&transform (foo) (bar)))))
(should-error (snippet--canonicalize-form '(&field 1 (&eval (foo) (bar)))))
(should-error (snippet--canonicalize-form '(&mirror 1 (foo) (bar))))
(should-error (snippet--canonicalize-form '(&field 1 (foo) (bar))))
(should-error (snippet--canonicalize-form '(&eval (foo) (bar)))))

View File

@ -68,15 +68,20 @@
(`(&eval ,_)
form)
(`(&eval . ,_)
(error "provide only one form after &eval or &transform"))
(error "provide only one form after &eval in %S" form))
(`(&mirror ,name)
`(&mirror ,name (&transform field-text)))
`(&mirror ,name (&transform field-string)))
(`(&mirror ,_ (&transform ,_))
form)
(`(&field ,_ (,(or `&transform `&eval) ,_))
form)
(`(,(or `&mirror `&field) ,_ (,(or `&transform `&eval) . ,_))
(error "provide only one form after &eval or &transform"))
(`(,(or `&mirror `&field) ,_ (,(or `&transform `&eval) ,_ . (,extra)))
(error "expected one form after &eval or &transform in %S, you have %d"
form (1+ (length extra))))
(`(,(or `&mirror `&field) ,name ,_ . (,extra))
(error "expected one form after '%S' in %S, you have %d"
name
form (1+ (length extra))))
(`(&field ,name (&nested . ,more-forms))
`(&field ,name (&nested . (mapcar #'snippet--canonicalize-form
,more-forms)))