|
- (ns scan.lang.php.laravel5
- (:require [clojure.string :as str]
- [clojure.java.io :as io]))
-
- (def
- ^{}
- load-method-signature!
- (fn [route]
- (cond (.exists (io/file (:ctl route)))
- (let [src (slurp (:ctl route))]
- (->>
- (-> (re-pattern (str "function " (:act route) "\\((.*)\\)"))
- (re-find src)
- last
- (or "")
- (str/split #","))
- (map str/trim)
- (filter (fn [e] (not (str/includes? e "Request"))))
- (into [])))
- :else nil)))
-
- (def
- ^{}
- routes
- (fn [project-path]
- (map (fn [route]
- (assoc route
- :signature
- (load-method-signature! route)))
- (let [route-file (str project-path "/routes/web.php")]
- (filter
- (fn [e]
- (not (nil? e)))
- (map
- (fn [hit]
- (let [[_ verb raw-params] hit
- params (map (fn [e] (str/trim (str/escape e {\' ""}))) (str/split raw-params #","))
- [route ctl] params]
- (if ctl
- {:verb verb
- :path route
- :ctl (str project-path "/app/Http/Controllers/" (str/replace (str/replace ctl #"\@(.*)" ".php") "\\" "/"))
- :act (str/replace ctl #"(.*)\@" "")}
- nil)))
- (re-seq
- #"router->(.*)\((.*)\)"
- (slurp route-file))))))))
|