as input. For arguments, can use `(collected? [a b] ...)` syntax to look
at each collected value as individual arguments, or `(collected? v ...)` syntax
to capture all the collected values as a single vector.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L696">view source</a></div></div><divclass="public anchor"id="var-declarepath"><h3>declarepath</h3><h4class="type">macro</h4><divclass="usage"><code>(declarepath name)</code><code>(declarepath name params)</code></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L308">view source</a></div></div><divclass="public anchor"id="var-defcollector"><h3>defcollector</h3><h4class="type">macro</h4><divclass="usage"><code>(defcollector name & body)</code></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L182">view source</a></div></div><divclass="public anchor"id="var-defnav"><h3>defnav</h3><h4class="type">macro</h4><divclass="usage"><code>(defnav name & body)</code></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L179">view source</a></div></div><divclass="public anchor"id="var-defnavconstructor"><h3>defnavconstructor</h3><h4class="type">macro</h4><divclass="usage"><code>(defnavconstructor name & args)</code></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L405">view source</a></div></div><divclass="public anchor"id="var-defpathedfn"><h3>defpathedfn</h3><h4class="type">macro</h4><divclass="usage"><code>(defpathedfn name & args)</code></div><divclass="doc"><preclass="plaintext">Defines a higher order navigator that itself takes in one or more paths
top level var). See `transformed` for an example.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L390">view source</a></div></div><divclass="public anchor"id="var-defprotocolpath"><h3>defprotocolpath</h3><h4class="type">macro</h4><divclass="usage"><code>(defprotocolpath name)</code><code>(defprotocolpath name params)</code></div><divclass="doc"><preclass="plaintext">Defines a navigator that chooses the path to take based on the type
</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L242">view source</a></div></div><divclass="public anchor"id="var-extend-protocolpath"><h3>extend-protocolpath</h3><h4class="type">macro</h4><divclass="usage"><code>(extend-protocolpath protpath & extensions)</code></div><divclass="doc"><preclass="plaintext">Used in conjunction with `defprotocolpath`. See [[defprotocolpath]].
</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L359">view source</a></div></div><divclass="public anchor"id="var-fixed-pathed-nav"><h3>fixed-pathed-nav</h3><h4class="type">macro</h4><divclass="usage"><code>(fixed-pathed-nav bindings impl1 impl2)</code></div><divclass="doc"><preclass="plaintext">This helper is used to define navigators that take in a fixed number of other
are required, then the result is executable.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L185">view source</a></div></div><divclass="public anchor"id="var-multi-transform"><h3>multi-transform</h3><h4class="type">macro</h4><divclass="usage"><code>(multi-transform apath structure)</code></div><divclass="doc"><preclass="plaintext">Just like `transform` but expects transform functions to be specified
inline in the path using `terminal`. Error is thrown if navigation finishes
at a non-`terminal` navigator. `terminal-val` is a wrapper around `terminal` and is
the `multi-transform` equivalent of `setval`.
This macro will attempt to do inline factoring and caching of the path, falling
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L655">view source</a></div></div><divclass="public anchor"id="var-nav"><h3>nav</h3><h4class="type">macro</h4><divclass="usage"><code>(nav params impl1 impl2)</code></div><divclass="doc"><preclass="plaintext">Defines a navigator with late bound parameters. This navigator can be precompiled
that needed parameters (in the order in which they were declared).</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L116">view source</a></div></div><divclass="public anchor"id="var-paramscollector"><h3>paramscollector</h3><h4class="type">macro</h4><divclass="usage"><code>(paramscollector params impl)</code></div><divclass="doc"><preclass="plaintext">Defines a Collector with late bound parameters. This collector can be precompiled
</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L167">view source</a></div></div><divclass="public anchor"id="var-paramsfn"><h3>paramsfn</h3><h4class="type">macro</h4><divclass="usage"><code>(paramsfn params [structure-sym] & impl)</code></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L156">view source</a></div></div><divclass="public anchor"id="var-path"><h3>path</h3><h4class="type">macro</h4><divclass="usage"><code>(path & path)</code></div><divclass="doc"><preclass="plaintext">Same as calling comp-paths, except it caches the composition of the static part
select/transform/setval/replace-in/etc. macros.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L497">view source</a></div></div><divclass="public anchor"id="var-pathed-collector"><h3>pathed-collector</h3><h4class="type">macro</h4><divclass="usage"><code>(pathed-collector [name path] impl)</code></div><divclass="doc"><preclass="plaintext">This helper is used to define collectors that take in a single selector
are required, then the result is executable.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L221">view source</a></div></div><divclass="public anchor"id="var-providepath"><h3>providepath</h3><h4class="type">macro</h4><divclass="usage"><code>(providepath name apath)</code></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L346">view source</a></div></div><divclass="public anchor"id="var-replace-in"><h3>replace-in</h3><h4class="type">macro</h4><divclass="usage"><code>(replace-in apath transform-fn structure & args)</code></div><divclass="doc"><preclass="plaintext">Similar to transform, except returns a pair of [transformed-structure sequence-of-user-ret].
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L684">view source</a></div></div><divclass="public anchor"id="var-richnav"><h3>richnav</h3><h4class="type">macro</h4><divclass="usage"><code>(richnav num-params impl1 impl2)</code></div><divclass="doc"><preclass="plaintext">Defines a navigator with full access to collected vals, the parameters array,
and the parameters array index. `next-fn` expects to receive the params array,
a params index, the collected vals, and finally the next structure.
`next-fn` will automatically skip ahead in params array by `num-params`, so the
index passed to it is ignored.
This is the lowest level way of making navigators.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L127">view source</a></div></div><divclass="public anchor"id="var-select"><h3>select</h3><h4class="type">macro</h4><divclass="usage"><code>(select apath structure)</code></div><divclass="doc"><preclass="plaintext">Navigates to and returns a sequence of all the elements specified by the path.
This macro will attempt to do inline factoring and caching of the path, falling
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L597">view source</a></div></div><divclass="public anchor"id="var-select-any"><h3>select-any</h3><h4class="type">macro</h4><divclass="usage"><code>(select-any apath structure)</code></div><divclass="doc"><preclass="plaintext">Returns any element found or [[NONE]] if nothing selected. This is the most
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L629">view source</a></div></div><divclass="public anchor"id="var-select-first"><h3>select-first</h3><h4class="type">macro</h4><divclass="usage"><code>(select-first apath structure)</code></div><divclass="doc"><preclass="plaintext">Returns first element found.
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L621">view source</a></div></div><divclass="public anchor"id="var-select-one"><h3>select-one</h3><h4class="type">macro</h4><divclass="usage"><code>(select-one apath structure)</code></div><divclass="doc"><preclass="plaintext">Like select, but returns either one element or nil. Throws exception if multiple elements found.
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L613">view source</a></div></div><divclass="public anchor"id="var-select-one.21"><h3>select-one!</h3><h4class="type">macro</h4><divclass="usage"><code>(select-one! apath structure)</code></div><divclass="doc"><preclass="plaintext">Returns exactly one element, throws exception if zero or multiple elements found.
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L605">view source</a></div></div><divclass="public anchor"id="var-selected-any.3F"><h3>selected-any?</h3><h4class="type">macro</h4><divclass="usage"><code>(selected-any? apath structure)</code></div><divclass="doc"><preclass="plaintext">Returns true if any element was selected, false otherwise.
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L638">view source</a></div></div><divclass="public anchor"id="var-setval"><h3>setval</h3><h4class="type">macro</h4><divclass="usage"><code>(setval apath aval structure)</code></div><divclass="doc"><preclass="plaintext">Navigates to each value specified by the path and replaces it by `aval`.
This macro will attempt to do inline factoring and caching of the path, falling
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L667">view source</a></div></div><divclass="public anchor"id="var-transform"><h3>transform</h3><h4class="type">macro</h4><divclass="usage"><code>(transform apath transform-fn structure)</code></div><divclass="doc"><preclass="plaintext">Navigates to each value specified by the path and replaces it by the result of running
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L646">view source</a></div></div><divclass="public anchor"id="var-traverse"><h3>traverse</h3><h4class="type">macro</h4><divclass="usage"><code>(traverse apath structure)</code></div><divclass="doc"><preclass="plaintext">Return a reducible object that traverses over `structure` to every element
specified by the path.
This macro will attempt to do inline factoring and caching of the path, falling
back to compiling the path on every invocation if it's not possible to
factor/cache the path.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L675">view source</a></div></div><divclass="public anchor"id="var-variable-pathed-nav"><h3>variable-pathed-nav</h3><h4class="type">macro</h4><divclass="usage"><code>(variable-pathed-nav [latepaths-seq-sym paths-seq] impl1 impl2)</code></div><divclass="doc"><preclass="plaintext">This helper is used to define navigators that take in a variable number of other
are required, then the result is executable.</pre></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/0.12.0/src/clj/com/rpl/specter/macros.clj#L204">view source</a></div></div></div></body></html>