diff --git a/hy/contrib/meth.hy b/hy/contrib/meth.hy index 1f4ae70..b6301f2 100644 --- a/hy/contrib/meth.hy +++ b/hy/contrib/meth.hy @@ -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!"))