From fa762e809ca6c0973cd593a1063bf44469ed2bf5 Mon Sep 17 00:00:00 2001 From: Michael Fogleman Date: Sun, 22 Oct 2017 12:31:53 -0400 Subject: [PATCH] Initial regex-nav doc. --- List-of-Navigators.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/List-of-Navigators.md b/List-of-Navigators.md index 70513cb..91d29fe 100644 --- a/List-of-Navigators.md +++ b/List-of-Navigators.md @@ -68,6 +68,7 @@ It is a convention in Specter that unparameterized navigators are capitalized, w - [pred>=](#pred>=) - [putval](#putval) - [not-selected?](#not-selected) + - [regex-nav](#regex-nav) - [selected?](#selected) - [set-elem](#set-elem) - [srange](#srange) @@ -993,6 +994,37 @@ See also [selected?](#selected?). nil ``` +## regex-nav + +`(regex-nav regex)` + +Uses `re-seq` for selects and `clojure.string/replace` for transforms. + +```clojure +=> (select (regex-nav #"t") "test") +["t" "t"] +=> (select [:a (regex-nav #"t")] {:a "test"}) +["t" "t"] +=> (transform (regex-nav #"t") clojure.string/capitalize "test") +"TesT" +=> (transform [:a (regex-nav #"t")] clojure.string/capitalize {:a "test"}) +{:a "TesT"} +=> (transform (regex-nav #"\s+\w") clojure.string/triml "Hello World!") +"HelloWorld!" +=> (setval (regex-nav #"t") "z" "test") +"zesz" +=> (setval [:a (regex-nav #"t")] "z" {:a "test"}) +{:a "zesz"} +=> (transform (regex-nav #"aa*") (fn [s] (-> s count str)) "aadt") +"2dt" +=> (transform (regex-nav #"[Aa]+") (fn [s] (apply str (take (count s) (repeat "@")))) "Amsterdam Aardvarks") +"@msterd@m @@rdv@rks" +=> (select [(regex-nav #"(\S+):\ (\d+)") (nthpath 2)] "Mary: 1st George: 2nd Arthur: 3rd") +["1" "2" "3"] +=> (transform (subselect (regex-nav #"\d\w+")) reverse "Mary: 1st George: 2nd Arthur: 3rd") +"Mary: 3rd George: 2nd Arthur: 1st" +``` + ## selected? `(selected? & path)`