meth wasn't accepting correctly its parameters

Now also accepts more than 1 statement in the code part of the macro
refactored to use only 1 codebase (no more route != route-with-macros)
This commit is contained in:
Guillermo Vaya 2013-11-18 07:58:40 +01:00 committed by Guillermo Vaya
parent 8970662dcb
commit f913c2aa8c

View File

@ -1,31 +1,30 @@
;;; Meth
;; based on paultag's meth library to access a Flask based application
(defmacro route [name path params code]
"Default get request"
`(let [[deco (.route app ~path)]]
(with-decorator deco
(defn ~name ~params ~@code))))
(defmacro route-with-methods [name path params code methods]
(defmacro route-with-methods [name path methods params &rest code]
"Same as route but with an extra methods array to specify HTTP methods"
`(let [[deco (kwapply (.route app ~path)
{"methods" ~methods})]]
(with-decorator deco
(defn ~name ~params ~@code))))
(defn ~name ~params
(progn ~@code)))))
;; Some macro examples
(defmacro post-route [name path params code]
(defmacro route [name path params &rest code]
"Post request"
`(route-with-methods ~name ~path ~params ~code ["POST"]))
`(route-with-methods ~name ~path ["GET"] ~params ~@code))
(defmacro put-route [name path params code]
(defmacro post-route [name path params &rest code]
"Post request"
`(route-with-methods ~name ~path ["POST"] ~params ~@code))
(defmacro put-route [name path params &rest code]
"Put request"
`(route-with-methods ~name ~path ~params ~code ["PUT"]))
`(route-with-methods ~name ~path ["PUT"] ~params ~@code))
(defmacro delete-route [name path params code]
(defmacro delete-route [name path params &rest code]
"Delete request"
`(route-with-methods ~name ~path ~params ~code ["DELETE"]))
`(route-with-methods ~name ~path ["DELETE"] ~params ~@code))
;;; Simple example application
@ -34,7 +33,7 @@
;; (import [flask [Flask]])
;; (setv app (Flask "__main__"))
;; (require methy)
;; (require hy.contrib.meth)
;; (print "setup / with GET")
;; (route get-index "/" [] (str "Hy world!"))