diff --git a/src/clj/com/rpl/specter.cljc b/src/clj/com/rpl/specter.cljc index a571e88..2a1a931 100644 --- a/src/clj/com/rpl/specter.cljc +++ b/src/clj/com/rpl/specter.cljc @@ -1170,6 +1170,10 @@ ImplicitNav (implicit-nav [this] (pred this))) +(extend-type #?(:clj java.util.regex.Pattern :cljs RegExp) + ImplicitNav + (implicit-nav [this] (n/regex* this))) + (defnav ^{:doc "Navigates to the provided val if the structure is nil. Otherwise it stays navigated at the structure."} diff --git a/src/clj/com/rpl/specter/navs.cljc b/src/clj/com/rpl/specter/navs.cljc index 5cd904f..f55524c 100644 --- a/src/clj/com/rpl/specter/navs.cljc +++ b/src/clj/com/rpl/specter/navs.cljc @@ -622,6 +622,14 @@ (do-keypath-transform vals structure key next-fn) )) +(defrichnav ^{:doc "Navigates to the regex applied to a string, navigating to nil if it does not exist or nothing is found."} + ;; Setting the value to NONE will remove it from the collection.} + regex* + [re] + (select* [this vals structure next-fn] + (next-fn vals (re-find re structure))) + #_(transform* [this vals structure next-fn] + (next-fn (clojure.string/replace structure re vals)))) (defrichnav ^{:doc "Navigates to the key only if it exists in the map. Setting the value to NONE