clj-commons / secretary

A client-side router for ClojureScript.
773 stars 64 forks source link

defroutes w/ validations nil param fix #86

Open RyanBertrand opened 7 years ago

RyanBertrand commented 7 years ago

I was getting errors while using defroute with validations.

My vector route looked like:

(defroute ["/patient/:patient-id" :patient-id #"pat_[A-Za-z0-9]{16}"]
            {:keys [patient-id] :as params}
            (do))

The error printed to the JS console was:

re-matches must match against a string

It seems that calling re-matches when the value pulled from params is nil throws an error in invalid-params fn.

This pr adds an additional check to see if the param value is non-nil before trying to validate it via regex. If it is nil, then it is essentially invalid as it doesn't match the route.

Thanks for the great library!

borkdude commented 5 years ago

@RyanBertrand

Any reason you're not using nil?? Please add a unit test for this change.