specter/com.rpl.specter.html

183 lines
74 KiB
HTML
Raw Normal View History

2016-06-02 16:03:15 +00:00
<!DOCTYPE html PUBLIC ""
"">
2019-10-14 03:05:18 +00:00
<html><head><meta charset="UTF-8" /><title>com.rpl.specter documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Specter</span> <span class="project-version">1.1.3</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>com</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>rpl</span></div></div></li><li class="depth-3 current"><a href="com.rpl.specter.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>specter</span></div></a></li><li class="depth-4 branch"><a href="com.rpl.specter.protocols.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>protocols</span></div></a></li><li class="depth-4 branch"><a href="com.rpl.specter.transients.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>transients</span></div></a></li><li class="depth-4"><a href="com.rpl.specter.zipper.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>zipper</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="com.rpl.specter.html#var-AFTER-ELEM"><div class="inner"><span>AFTER-ELEM</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-ALL"><div class="inner"><span>ALL</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-ALL-WITH-META"><div class="inner"><span>ALL-WITH-META</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-ATOM"><div class="inner"><span>ATOM</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-BEFORE-ELEM"><div class="inner"><span>BEFORE-ELEM</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-before-index"><div class="inner"><span>before-index</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-BEGINNING"><div class="inner"><span>BEGINNING</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-codewalker"><div class="inner"><span>codewalker</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-collect"><div class="inner"><span>collect</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-collect-one"><div class="inner"><span>collect-one</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-collected.3F"><div class="inner"><span>collected?</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-collector"><div class="inner"><span>collector</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-comp-paths"><div class="inner"><span>comp-paths</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-compact"><div class="inner"><span>compact</span></div></a></li><li class="depth-1"><a href="com.rpl.specter.html#var-compiled-multi-transform"><div class="inner"><span>compiled-multi-transform</span></div></a></li><li class="depth-1"><
2017-03-01 17:37:59 +00:00
For transformations if result is not `NONE`,
2019-10-14 03:05:18 +00:00
then append that value.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L834">view source</a></div></div><div class="public anchor" id="var-ALL"><h3>ALL</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to every element of the collection. For maps navigates to
a vector of `[key value]`.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L679">view source</a></div></div><div class="public anchor" id="var-ALL-WITH-META"><h3>ALL-WITH-META</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Same as ALL, except maintains metadata on the structure.
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L689">view source</a></div></div><div class="public anchor" id="var-ATOM"><h3>ATOM</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to atom value.
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1085">view source</a></div></div><div class="public anchor" id="var-BEFORE-ELEM"><h3>BEFORE-ELEM</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to 'void' element before the sequence.
2017-03-01 17:37:59 +00:00
For transformations if result is not `NONE`,
2019-10-14 03:05:18 +00:00
then prepend that value.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L819">view source</a></div></div><div class="public anchor" id="var-before-index"><h3>before-index</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the empty space between the index and the prior index. For select
navigates to NONE, and transforms to non-NONE insert at that position.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L968">view source</a></div></div><div class="public anchor" id="var-BEGINNING"><h3>BEGINNING</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to the empty subsequence before the first element of the collection.
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L777">view source</a></div></div><div class="public anchor" id="var-codewalker"><h3>codewalker</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Like `walker` but maintains metadata of any forms traversed.
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1455">view source</a></div></div><div class="public anchor" id="var-collect"><h3>collect</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Adds the result of running select with the given path on the
current value to the collected vals.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1292">view source</a></div></div><div class="public anchor" id="var-collect-one"><h3>collect-one</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Adds the result of running select-one with the given path on the
current value to the collected vals.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1302">view source</a></div></div><div class="public anchor" id="var-collected.3F"><h3>collected?</h3><h4 class="type">macro</h4><div class="usage"><code>(collected? params &amp; body)</code></div><div class="doc"><pre class="plaintext">Creates a filter function navigator that takes in all the collected values
2016-09-06 23:38:44 +00:00
as input. For arguments, can use `(collected? [a b] ...)` syntax to look
at each collected value as individual arguments, or `(collected? v ...)` syntax
2019-10-14 03:01:40 +00:00
to capture all the collected values as a single vector.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L399">view source</a></div></div><div class="public anchor" id="var-collector"><h3>collector</h3><h4 class="type">macro</h4><div class="usage"><code>(collector params [_ [_ structure-sym] &amp; body])</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L67">view source</a></div></div><div class="public anchor" id="var-comp-paths"><h3>comp-paths</h3><div class="usage"><code>(comp-paths &amp; apath)</code></div><div class="doc"><pre class="plaintext">Returns a compiled version of the given path for use with
2019-10-14 03:05:18 +00:00
compiled-{select/transform/setval/etc.} functions.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L478">view source</a></div></div><div class="public anchor" id="var-compact"><h3>compact</h3><div class="usage"></div><div class="doc"><pre class="plaintext">During transforms, after each step of navigation in subpath check if the
value is empty. If so, remove that value by setting it to NONE.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1465">view source</a></div></div><div class="public anchor" id="var-compiled-multi-transform"><h3>compiled-multi-transform</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of `multi-transform` that takes in a path precompiled with `comp-paths`
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L575">view source</a></div></div><div class="public anchor" id="var-compiled-replace-in"><h3>compiled-replace-in</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of replace-in that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L596">view source</a></div></div><div class="public anchor" id="var-compiled-select"><h3>compiled-select</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of select that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L486">view source</a></div></div><div class="public anchor" id="var-compiled-select-any"><h3>compiled-select-any</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of select-any that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L520">view source</a></div></div><div class="public anchor" id="var-compiled-select-first"><h3>compiled-select-first</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of select-first that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L511">view source</a></div></div><div class="public anchor" id="var-compiled-select-one"><h3>compiled-select-one</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of select-one that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L495">view source</a></div></div><div class="public anchor" id="var-compiled-select-one.21"><h3>compiled-select-one!</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of select-one! that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L503">view source</a></div></div><div class="public anchor" id="var-compiled-selected-any.3F"><h3>compiled-selected-any?</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of selected-any? that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L533">view source</a></div></div><div class="public anchor" id="var-compiled-setval"><h3>compiled-setval</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of setval that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L588">view source</a></div></div><div class="public anchor" id="var-compiled-transform"><h3>compiled-transform</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of transform that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L562">view source</a></div></div><div class="public anchor" id="var-compiled-traverse"><h3>compiled-traverse</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of traverse that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L543">view source</a></div></div><div class="public anchor" id="var-compiled-traverse-all"><h3>compiled-traverse-all</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of traverse-all that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L552">view source</a></div></div><div class="public anchor" id="var-compiled-vtransform"><h3>compiled-vtransform</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Version of vtransform that takes in a path precompiled with comp-paths
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L565">view source</a></div></div><div class="public anchor" id="var-cond-path"><h3>cond-path</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Takes in alternating cond-path path cond-path path...
2016-06-02 16:03:15 +00:00
Tests the structure if selecting with cond-path returns anything.
If so, it uses the following path for this portion of the navigation.
Otherwise, it tries the next cond-path. If nothing matches, then the structure
2019-10-14 03:05:18 +00:00
is not selected.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1394">view source</a></div></div><div class="public anchor" id="var-continue-then-stay"><h3>continue-then-stay</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the provided path and then to the current element. This can be used
to implement post-order traversal.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1439">view source</a></div></div><div class="public anchor" id="var-continuous-subseqs"><h3>continuous-subseqs</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to every continuous subsequence of elements matching `pred`
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L766">view source</a></div></div><div class="public anchor" id="var-declarepath"><h3>declarepath</h3><h4 class="type">macro</h4><div class="usage"><code>(declarepath name)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L101">view source</a></div></div><div class="public anchor" id="var-defcollector"><h3>defcollector</h3><h4 class="type">macro</h4><div class="usage"><code>(defcollector name &amp; body)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L74">view source</a></div></div><div class="public anchor" id="var-defdynamicnav"><h3>defdynamicnav</h3><h4 class="type">macro</h4><div class="usage"><code>(defdynamicnav name &amp; args)</code></div><div class="doc"><pre class="plaintext">Defines a function that can choose what navigator to use at runtime based on
2016-09-06 23:38:44 +00:00
the dynamic context. The arguments will either be static values or
objects satisfying `dynamic-param?`. Use `late-bound-nav` to produce a runtime
navigator that uses the values of the dynamic params. See `selected?` for
2019-10-14 03:01:40 +00:00
an illustrative example of dynamic navs.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L147">view source</a></div></div><div class="public anchor" id="var-defmacroalias"><h3>defmacroalias</h3><h4 class="type">macro</h4><div class="usage"><code>(defmacroalias name target)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L57">view source</a></div></div><div class="public anchor" id="var-defnav"><h3>defnav</h3><h4 class="type">macro</h4><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L64">view source</a></div></div><div class="public anchor" id="var-defprotocolpath"><h3>defprotocolpath</h3><h4 class="type">macro</h4><div class="usage"><code>(defprotocolpath name)</code><code>(defprotocolpath name params)</code></div><div class="doc"><pre class="plaintext">Defines a navigator that chooses the path to take based on the type
2016-09-06 23:38:44 +00:00
of the value at the current point. May be specified with parameters to
specify that all extensions must require that number of parameters.
Currently not available for ClojureScript.
Example of usage:
(defrecord SingleAccount [funds])
(defrecord FamilyAccount [single-accounts])
(defprotocolpath FundsPath)
(extend-protocolpath FundsPath
SingleAccount :funds
FamilyAccount [ALL FundsPath]
)
2019-10-14 03:01:40 +00:00
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L415">view source</a></div></div><div class="public anchor" id="var-defrichnav"><h3>defrichnav</h3><h4 class="type">macro</h4><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L65">view source</a></div></div><div class="public anchor" id="var-DISPENSE"><h3>DISPENSE</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Drops all collected values for subsequent navigation.
2019-10-14 03:05:18 +00:00
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1340">view source</a></div></div><div class="public anchor" id="var-dynamic-param.3F"><h3>dynamic-param?</h3><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L611">view source</a></div></div><div class="public anchor" id="var-dynamicnav"><h3>dynamicnav</h3><h4 class="type">macro</h4><div class="usage"><code>(dynamicnav &amp; args)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L144">view source</a></div></div><div class="public anchor" id="var-eachnav"><h3>eachnav</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Turns a navigator that takes one argument into a navigator that takes
2017-03-01 17:37:59 +00:00
many arguments and uses the same navigator with each argument. There
2019-10-14 03:05:18 +00:00
is no performance cost to using this. See implementation of `keypath`</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L615">view source</a></div></div><div class="public anchor" id="var-END"><h3>END</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to the empty subsequence after the last element of the collection.
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L790">view source</a></div></div><div class="public anchor" id="var-end-fn"><h3>end-fn</h3><h4 class="type">macro</h4><div class="usage"><code>(end-fn &amp; args)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L471">view source</a></div></div><div class="public anchor" id="var-extend-protocolpath"><h3>extend-protocolpath</h3><h4 class="type">macro</h4><div class="usage"><code>(extend-protocolpath protpath &amp; extensions)</code></div><div class="doc"><pre class="plaintext">Used in conjunction with `defprotocolpath`. See [[defprotocolpath]].
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L462">view source</a></div></div><div class="public anchor" id="var-extend-protocolpath*"><h3>extend-protocolpath*</h3><div class="usage"><code>(extend-protocolpath* protpath-prot extensions)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L454">view source</a></div></div><div class="public anchor" id="var-filterer"><h3>filterer</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to a view of the current sequence that only contains elements that
2016-06-02 16:03:15 +00:00
match the given path. An element matches the selector path if calling select
2017-04-18 17:45:04 +00:00
on that element with the path yields anything other than an empty sequence.
For transformation: `NONE` entries in the result sequence cause corresponding entries in
input to be removed. A result sequence smaller than the input sequence is equivalent to
2019-10-14 03:05:18 +00:00
padding the result sequence with `NONE` at the end until the same size as the input.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1141">view source</a></div></div><div class="public anchor" id="var-FIRST"><h3>FIRST</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to the first element of the collection. If the collection is
empty navigation is stopped at this point.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L735">view source</a></div></div><div class="public anchor" id="var-if-path"><h3>if-path</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Like cond-path, but with if semantics.
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1349">view source</a></div></div><div class="public anchor" id="var-index-nav"><h3>index-nav</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the index of the sequence if within 0 and size. Transforms move element
at that index to the new index, shifting other elements in the sequence.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L983">view source</a></div></div><div class="public anchor" id="var-INDEXED-VALS"><h3>INDEXED-VALS</h3><div class="usage"></div><div class="doc"><pre class="plaintext">`indexed-vals` with a starting index of 0.
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1058">view source</a></div></div><div class="public anchor" id="var-indexed-vals"><h3>indexed-vals</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to [index elem] pairs for each element in a sequence. The sequence will be indexed
2017-10-19 15:28:57 +00:00
starting from `start`. Changing index in transform has same effect as `index-nav`. Indices seen
2019-10-14 03:05:18 +00:00
during transform take into account any shifting from prior sequence elements changing indices.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1022">view source</a></div></div><div class="public anchor" id="var-keypath"><h3>keypath</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to the specified keys one after another. If navigate to NONE,
that element is removed from the map or vector.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L952">view source</a></div></div><div class="public anchor" id="var-LAST"><h3>LAST</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to the last element of the collection. If the collection is
empty navigation is stopped at this point.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L729">view source</a></div></div><div class="public anchor" id="var-late-bound-collector"><h3>late-bound-collector</h3><h4 class="type">macro</h4><div class="usage"><code>(late-bound-collector bindings impl)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L91">view source</a></div></div><div class="public anchor" id="var-late-bound-nav"><h3>late-bound-nav</h3><h4 class="type">macro</h4><div class="usage"><code>(late-bound-nav bindings &amp; impls)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L88">view source</a></div></div><div class="public anchor" id="var-late-bound-richnav"><h3>late-bound-richnav</h3><h4 class="type">macro</h4><div class="usage"><code>(late-bound-richnav bindings &amp; impls)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L94">view source</a></div></div><div class="public anchor" id="var-late-path"><h3>late-path</h3><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L610">view source</a></div></div><div class="public anchor" id="var-late-resolved-fn"><h3>late-resolved-fn</h3><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L612">view source</a></div></div><div class="public anchor" id="var-local-declarepath"><h3>local-declarepath</h3><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L628">view source</a></div></div><div class="public anchor" id="var-map-key"><h3>map-key</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the given key in the map (not to the value). Navigates only if the
2017-06-15 15:16:54 +00:00
key currently exists in the map. Can transform to NONE to remove the key/value
2019-10-14 03:05:18 +00:00
pair from the map.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L909">view source</a></div></div><div class="public anchor" id="var-MAP-KEYS"><h3>MAP-KEYS</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to each key of the map. This is more efficient than
navigating via [ALL FIRST]</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L713">view source</a></div></div><div class="public anchor" id="var-MAP-VALS"><h3>MAP-VALS</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to each value of the map. This is more efficient than
navigating via [ALL LAST]</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L702">view source</a></div></div><div class="public anchor" id="var-META"><h3>META</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the metadata of the structure, or nil if
the structure has no metadata or may not contain metadata.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1257">view source</a></div></div><div class="public anchor" id="var-multi-path"><h3>multi-path</h3><div class="usage"></div><div class="doc"><pre class="plaintext">A path that branches on multiple paths. For updates,
applies updates to the paths in order.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1409">view source</a></div></div><div class="public anchor" id="var-multi-transform"><h3>multi-transform</h3><h4 class="type">macro</h4><div class="usage"><code>(multi-transform apath structure)</code></div><div class="doc"><pre class="plaintext">Just like `transform` but expects transform functions to be specified
2018-01-02 14:37:17 +00:00
inline in the path using `terminal` or `vterminal`. Error is thrown if navigation finishes
at a non-terminal navigator. `terminal-val` is a wrapper around `terminal` and is
2016-09-06 23:38:44 +00:00
the `multi-transform` equivalent of `setval`.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L361">view source</a></div></div><div class="public anchor" id="var-multi-transform*"><h3>multi-transform*</h3><div class="usage"><code>(multi-transform* path structure)</code></div><div class="doc"><pre class="plaintext">Just like `transform` but expects transform functions to be specified
2018-01-02 14:37:17 +00:00
inline in the path using `terminal` or `vterminal`. Error is thrown if navigation finishes
at a non-terminal navigator. `terminal-val` is a wrapper around `terminal` and is
2019-10-14 03:05:18 +00:00
the `multi-transform` equivalent of `setval`.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L579">view source</a></div></div><div class="public anchor" id="var-must"><h3>must</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to the specified keys one after another, only if they exist
2017-03-01 17:37:59 +00:00
in the data structure. If navigate to NONE, that element is removed
2019-10-14 03:05:18 +00:00
from the map or vector.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L957">view source</a></div></div><div class="public anchor" id="var-NAME"><h3>NAME</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the name portion of the keyword or symbol
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1266">view source</a></div></div><div class="public anchor" id="var-NAMESPACE"><h3>NAMESPACE</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the namespace portion of the keyword or symbol
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1279">view source</a></div></div><div class="public anchor" id="var-nav"><h3>nav</h3><h4 class="type">macro</h4><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L63">view source</a></div></div><div class="public anchor" id="var-NIL-.3ELIST"><h3>NIL-&gt;LIST</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to '() if the value is nil. Otherwise it stays
navigated at the current value.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1245">view source</a></div></div><div class="public anchor" id="var-NIL-.3ESET"><h3>NIL-&gt;SET</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to #{} if the value is nil. Otherwise it stays
navigated at the current value.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1239">view source</a></div></div><div class="public anchor" id="var-nil-.3Eval"><h3>nil-&gt;val</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the provided val if the structure is nil. Otherwise it stays
navigated at the structure.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1229">view source</a></div></div><div class="public anchor" id="var-NIL-.3EVECTOR"><h3>NIL-&gt;VECTOR</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to [] if the value is nil. Otherwise it stays
navigated at the current value.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1251">view source</a></div></div><div class="public anchor" id="var-NONE"><h3>NONE</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Global value used to indicate no elements selected during
[[select-any]].</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L523">view source</a></div></div><div class="public anchor" id="var-NONE-ELEM"><h3>NONE-ELEM</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to 'void' elem in the set.
2017-03-01 17:37:59 +00:00
For transformations - if result is not `NONE`,
2019-10-14 03:05:18 +00:00
then add that value to the set.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L802">view source</a></div></div><div class="public anchor" id="var-not-selected.3F"><h3>not-selected?</h3><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1124">view source</a></div></div><div class="public anchor" id="var-nthpath"><h3>nthpath</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to the specified indices one after another. If navigate to
NONE, that element is removed from the sequence.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L963">view source</a></div></div><div class="public anchor" id="var-parser"><h3>parser</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate to the result of running `parse-fn` on the value. For
2016-09-06 23:38:44 +00:00
transforms, the transformed value then has `unparse-fn` run on
2019-10-14 03:05:18 +00:00
it to get the final value at this point.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1073">view source</a></div></div><div class="public anchor" id="var-path"><h3>path</h3><h4 class="type">macro</h4><div class="usage"><code>(path &amp; path)</code></div><div class="doc"><pre class="plaintext">Same as calling comp-paths, except it caches the composition of the static parts
2016-09-06 23:38:44 +00:00
of the path for later re-use (when possible). For almost all idiomatic uses
of Specter provides huge speedup. This macro is automatically used by the
2019-10-14 03:01:40 +00:00
select/transform/setval/replace-in/etc. macros.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L232">view source</a></div></div><div class="public anchor" id="var-pred"><h3>pred</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Keeps the element only if it matches the supplied predicate. Functions in paths
2019-10-14 03:05:18 +00:00
implicitly convert to this navigator.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1175">view source</a></div></div><div class="public anchor" id="var-pred.3C"><h3>pred&lt;</h3><div class="usage"><code>(pred&lt; v)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1184">view source</a></div></div><div class="public anchor" id="var-pred.3C.3D"><h3>pred&lt;=</h3><div class="usage"><code>(pred&lt;= v)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1186">view source</a></div></div><div class="public anchor" id="var-pred.3D"><h3>pred=</h3><div class="usage"><code>(pred= v)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1183">view source</a></div></div><div class="public anchor" id="var-pred.3E"><h3>pred&gt;</h3><div class="usage"><code>(pred&gt; v)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1185">view source</a></div></div><div class="public anchor" id="var-pred.3E.3D"><h3>pred&gt;=</h3><div class="usage"><code>(pred&gt;= v)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1187">view source</a></div></div><div class="public anchor" id="var-providepath"><h3>providepath</h3><h4 class="type">macro</h4><div class="usage"><code>(providepath name apath)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L104">view source</a></div></div><div class="public anchor" id="var-putval"><h3>putval</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Adds an external value to the collected vals. Useful when additional arguments
2016-06-02 16:03:15 +00:00
are required to the transform function that would otherwise require partial
application or a wrapper function.
e.g., incrementing val at path [:a :b] by 3:
2019-10-14 03:05:18 +00:00
(transform [:a :b (putval 3)] + some-map)</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1312">view source</a></div></div><div class="public anchor" id="var-recursive-path"><h3>recursive-path</h3><h4 class="type">macro</h4><div class="usage"><code>(recursive-path params self-sym path)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L107">view source</a></div></div><div class="public anchor" id="var-regex-nav"><h3>regex-nav</h3><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1096">view source</a></div></div><div class="public anchor" id="var-replace-in"><h3>replace-in</h3><h4 class="type">macro</h4><div class="usage"><code>(replace-in apath transform-fn structure &amp; args)</code></div><div class="doc"><pre class="plaintext">Similar to transform, except returns a pair of [transformed-structure sequence-of-user-ret].
2016-06-02 16:03:15 +00:00
The transform-fn in this case is expected to return [ret user-ret]. ret is
what's used to transform the data structure, while user-ret will be added to the user-ret sequence
in the final return. replace-in is useful for situations where you need to know the specific values
2016-09-06 23:38:44 +00:00
of what was transformed in the data structure.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L389">view source</a></div></div><div class="public anchor" id="var-replace-in*"><h3>replace-in*</h3><div class="usage"><code>(replace-in* path transform-fn structure &amp; {:keys [merge-fn], :or {merge-fn concat}})</code></div><div class="doc"><pre class="plaintext">Similar to transform, except returns a pair of [transformed-structure sequence-of-user-ret].
2016-09-06 23:38:44 +00:00
The transform-fn in this case is expected to return [ret user-ret]. ret is
what's used to transform the data structure, while user-ret will be added to the user-ret sequence
in the final return. replace-in is useful for situations where you need to know the specific values
2019-10-14 03:05:18 +00:00
of what was transformed in the data structure.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L599">view source</a></div></div><div class="public anchor" id="var-richnav"><h3>richnav</h3><h4 class="type">macro</h4><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L62">view source</a></div></div><div class="public anchor" id="var-satisfies-protpath.3F"><h3>satisfies-protpath?</h3><h4 class="type">macro</h4><div class="usage"><code>(satisfies-protpath? protpath o)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L451">view source</a></div></div><div class="public anchor" id="var-select"><h3>select</h3><h4 class="type">macro</h4><div class="usage"><code>(select apath structure)</code></div><div class="doc"><pre class="plaintext">Navigates to and returns a sequence of all the elements specified by the path.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L311">view source</a></div></div><div class="public anchor" id="var-select*"><h3>select*</h3><div class="usage"><code>(select* path structure)</code></div><div class="doc"><pre class="plaintext">Navigates to and returns a sequence of all the elements specified by the path.
2019-10-14 03:05:18 +00:00
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L489">view source</a></div></div><div class="public anchor" id="var-select-any"><h3>select-any</h3><h4 class="type">macro</h4><div class="usage"><code>(select-any apath structure)</code></div><div class="doc"><pre class="plaintext">Returns any element found or [[NONE]] if nothing selected. This is the most
2016-09-06 23:38:44 +00:00
efficient of the various selection operations.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L335">view source</a></div></div><div class="public anchor" id="var-select-any*"><h3>select-any*</h3><div class="usage"><code>(select-any* path structure)</code></div><div class="doc"><pre class="plaintext">Returns any element found or [[NONE]] if nothing selected. This is the most
2019-10-14 03:05:18 +00:00
efficient of the various selection operations.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L527">view source</a></div></div><div class="public anchor" id="var-select-first"><h3>select-first</h3><h4 class="type">macro</h4><div class="usage"><code>(select-first apath structure)</code></div><div class="doc"><pre class="plaintext">Returns first element found.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L329">view source</a></div></div><div class="public anchor" id="var-select-first*"><h3>select-first*</h3><div class="usage"><code>(select-first* path structure)</code></div><div class="doc"><pre class="plaintext">Returns first element found.
2019-10-14 03:05:18 +00:00
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L515">view source</a></div></div><div class="public anchor" id="var-select-one"><h3>select-one</h3><h4 class="type">macro</h4><div class="usage"><code>(select-one apath structure)</code></div><div class="doc"><pre class="plaintext">Like select, but returns either one element or nil. Throws exception if multiple elements found.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L323">view source</a></div></div><div class="public anchor" id="var-select-one.21"><h3>select-one!</h3><h4 class="type">macro</h4><div class="usage"><code>(select-one! apath structure)</code></div><div class="doc"><pre class="plaintext">Returns exactly one element, throws exception if zero or multiple elements found.
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L317">view source</a></div></div><div class="public anchor" id="var-select-one.21*"><h3>select-one!*</h3><div class="usage"><code>(select-one!* path structure)</code></div><div class="doc"><pre class="plaintext">Returns exactly one element, throws exception if zero or multiple elements found
2019-10-14 03:05:18 +00:00
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L506">view source</a></div></div><div class="public anchor" id="var-select-one*"><h3>select-one*</h3><div class="usage"><code>(select-one* path structure)</code></div><div class="doc"><pre class="plaintext">Like select, but returns either one element or nil. Throws exception if multiple elements found
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L498">view source</a></div></div><div class="public anchor" id="var-selected-any.3F"><h3>selected-any?</h3><h4 class="type">macro</h4><div class="usage"><code>(selected-any? apath structure)</code></div><div class="doc"><pre class="plaintext">Returns true if any element was selected, false otherwise.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L342">view source</a></div></div><div class="public anchor" id="var-selected-any.3F*"><h3>selected-any?*</h3><div class="usage"><code>(selected-any?* path structure)</code></div><div class="doc"><pre class="plaintext">Returns true if any element was selected, false otherwise.
2019-10-14 03:05:18 +00:00
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L536">view source</a></div></div><div class="public anchor" id="var-selected.3F"><h3>selected?</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Filters the current value based on whether a path finds anything.
2016-06-02 16:03:15 +00:00
e.g. (selected? :vals ALL even?) keeps the current element only if an
2019-10-14 03:05:18 +00:00
even number exists for the :vals key.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1103">view source</a></div></div><div class="public anchor" id="var-set-elem"><h3>set-elem</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the given element in the set only if it exists in the set.
Can transform to NONE to remove the element from the set.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L931">view source</a></div></div><div class="public anchor" id="var-setval"><h3>setval</h3><h4 class="type">macro</h4><div class="usage"><code>(setval apath aval structure)</code></div><div class="doc"><pre class="plaintext">Navigates to each value specified by the path and replaces it by `aval`.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L371">view source</a></div></div><div class="public anchor" id="var-setval*"><h3>setval*</h3><div class="usage"><code>(setval* path val structure)</code></div><div class="doc"><pre class="plaintext">Navigates to each value specified by the path and replaces it by val
2019-10-14 03:05:18 +00:00
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L591">view source</a></div></div><div class="public anchor" id="var-srange"><h3>srange</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the subsequence bound by the indexes start (inclusive)
and end (exclusive)</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L755">view source</a></div></div><div class="public anchor" id="var-srange-dynamic"><h3>srange-dynamic</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Uses start-index-fn and end-index-fn to determine the bounds of the subsequence
2017-06-15 15:16:54 +00:00
to select when navigating. `start-index-fn` takes in the structure as input. `end-index-fn`
2019-10-14 03:05:18 +00:00
can be one of two forms. If a regular function (e.g. defined with `fn`), it takes in only the structure as input. If a function defined using special `end-fn` macro, it takes in the structure and the result of `start-index-fn`.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L741">view source</a></div></div><div class="public anchor" id="var-STAY"><h3>STAY</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Stays navigated at the current point. Essentially a no-op navigator.
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L644">view source</a></div></div><div class="public anchor" id="var-stay-then-continue"><h3>stay-then-continue</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the current element and then navigates via the provided path.
This can be used to implement pre-order traversal.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1433">view source</a></div></div><div class="public anchor" id="var-STOP"><h3>STOP</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Stops navigation at this point. For selection returns nothing and for
transformation returns the structure unchanged</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L632">view source</a></div></div><div class="public anchor" id="var-submap"><h3>submap</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the specified submap (using select-keys).
2016-06-02 16:03:15 +00:00
In a transform, that submap in the original map is changed to the new
2019-10-14 03:05:18 +00:00
value of the submap.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L865">view source</a></div></div><div class="public anchor" id="var-subselect"><h3>subselect</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to a sequence that contains the results of (select ...),
2016-06-02 16:03:15 +00:00
but is a view to the original structure that can be transformed.
Requires that the input navigators will walk the structure's
children in the same order when executed on "select" and then
2017-04-18 17:45:04 +00:00
"transform".
If transformed sequence is smaller than input sequence, missing entries
2017-06-15 15:16:54 +00:00
will be filled in with NONE, triggering removal if supported by that navigator.
2019-10-14 03:05:18 +00:00
Value collection (e.g. collect, collect-one) may not be used in the subpath.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L880">view source</a></div></div><div class="public anchor" id="var-subset"><h3>subset</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to the specified subset (by taking an intersection).
2016-06-02 16:03:15 +00:00
In a transform, that subset in the original set is changed to the
2019-10-14 03:05:18 +00:00
new value of the subset.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L849">view source</a></div></div><div class="public anchor" id="var-terminal"><h3>terminal</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Defines an endpoint in the navigation the transform function run. The transform
2016-08-06 04:47:46 +00:00
function works just like it does in `transform`, with collected values
2019-10-14 03:05:18 +00:00
given as the first arguments</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L649">view source</a></div></div><div class="public anchor" id="var-terminal-val"><h3>terminal-val</h3><div class="usage"><code>(terminal-val v)</code></div><div class="doc"><pre class="plaintext">Like `terminal` but specifies a val to set at the location regardless of
the collected values or the value at the location.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L673">view source</a></div></div><div class="public anchor" id="var-transform"><h3>transform</h3><h4 class="type">macro</h4><div class="usage"><code>(transform apath transform-fn structure)</code></div><div class="doc"><pre class="plaintext">Navigates to each value specified by the path and replaces it by the result of running
2016-09-06 23:38:44 +00:00
the transform-fn on it.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L348">view source</a></div></div><div class="public anchor" id="var-transform*"><h3>transform*</h3><div class="usage"><code>(transform* path transform-fn structure)</code></div><div class="doc"><pre class="plaintext">Navigates to each value specified by the path and replaces it by the result of running
2019-10-14 03:05:18 +00:00
the transform-fn on it</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L569">view source</a></div></div><div class="public anchor" id="var-transformed"><h3>transformed</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to a view of the current value by transforming it with the
specified path and update-fn.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1152">view source</a></div></div><div class="public anchor" id="var-traverse"><h3>traverse</h3><h4 class="type">macro</h4><div class="usage"><code>(traverse apath structure)</code></div><div class="doc"><pre class="plaintext">Return a reducible object that traverses over `structure` to every element
2016-09-06 23:38:44 +00:00
specified by the path.
2019-10-14 03:01:40 +00:00
This macro will do inline caching of the path.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L377">view source</a></div></div><div class="public anchor" id="var-traverse*"><h3>traverse*</h3><div class="usage"><code>(traverse* apath structure)</code></div><div class="doc"><pre class="plaintext">Return a reducible object that traverses over `structure` to every element
2019-10-14 03:05:18 +00:00
specified by the path</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L546">view source</a></div></div><div class="public anchor" id="var-traverse-all"><h3>traverse-all</h3><h4 class="type">macro</h4><div class="usage"><code>(traverse-all apath)</code></div><div class="doc"><pre class="plaintext">Returns a transducer that traverses over each element with the given path.
2019-10-14 03:01:40 +00:00
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L384">view source</a></div></div><div class="public anchor" id="var-traverse-all*"><h3>traverse-all*</h3><div class="usage"><code>(traverse-all* apath)</code></div><div class="doc"><pre class="plaintext">Returns a transducer that traverses over each element with the given path.
2019-10-14 03:05:18 +00:00
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L555">view source</a></div></div><div class="public anchor" id="var-traversed"><h3>traversed</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to a view of the current value by transforming with a reduction over
the specified traversal.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1163">view source</a></div></div><div class="public anchor" id="var-VAL"><h3>VAL</h3><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L725">view source</a></div></div><div class="public anchor" id="var-view"><h3>view</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigates to result of running `afn` on the currently navigated value.
</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1063">view source</a></div></div><div class="public anchor" id="var-vterminal"><h3>vterminal</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Defines an endpoint in the navigation the transform function run.The transform
2018-01-02 14:37:17 +00:00
function works differently than it does in `transform`. Rather than receive
collected vals spliced in as the first arguments to the function, this function
always takes two arguemnts. The first is all collected vals in a vector, and
2019-10-14 03:05:18 +00:00
the second is the navigated value.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L660">view source</a></div></div><div class="public anchor" id="var-vtransform"><h3>vtransform</h3><h4 class="type">macro</h4><div class="usage"><code>(vtransform apath transform-fn structure)</code></div><div class="doc"><pre class="plaintext">Navigates to each value specified by the path and replaces it by the result of running
2019-10-14 03:01:40 +00:00
the transform-fn on two arguments: the collected values as a vector, and the navigated value.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L355">view source</a></div></div><div class="public anchor" id="var-walker"><h3>walker</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Navigate the data structure until reaching
2017-06-15 15:16:54 +00:00
a value for which `afn` returns truthy. Has
2019-10-14 03:05:18 +00:00
same semantics as clojure.walk.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1445">view source</a></div></div><div class="public anchor" id="var-with-fresh-collected"><h3>with-fresh-collected</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Continues navigating on the given path with the collected vals reset to []. Once
2017-03-01 17:37:59 +00:00
navigation leaves the scope of with-fresh-collected, the collected vals revert
2019-10-14 03:05:18 +00:00
to what they were before.</pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L1325">view source</a></div></div><div class="public anchor" id="var-with-inline-debug"><h3>with-inline-debug</h3><h4 class="type">macro</h4><div class="usage"><code>(with-inline-debug &amp; body)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L97">view source</a></div></div><div class="public anchor" id="var-wrap-dynamic-nav"><h3>wrap-dynamic-nav</h3><div class="usage"><code>(wrap-dynamic-nav f)</code></div><div class="doc"><pre class="plaintext"></pre></div><div class="src-link"><a href="https://github.com/nathanmarz/specter/tree/1.1.3/src/clj/com/rpl/specter.cljc#L41">view source</a></div></div></div></body></html>