</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L314">view source</a></div></div><divclass="public anchor"id="var-BEGINNING"><h3>BEGINNING</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L202">view source</a></div></div><divclass="public anchor"id="var-bind-params*"><h3>bind-params*</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Takes a compiled path that needs late-bound params and supplies it with
an array of params and a position in the array from which to begin reading
params. The return value is an executable selector.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L111">view source</a></div></div><divclass="public anchor"id="var-codewalker"><h3>codewalker</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L245">view source</a></div></div><divclass="public anchor"id="var-collect"><h3>collect</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L427">view source</a></div></div><divclass="public anchor"id="var-collect-one"><h3>collect-one</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L433">view source</a></div></div><divclass="public anchor"id="var-comp-paths"><h3>comp-paths</h3><divclass="usage"><code>(comp-paths & paths)</code></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L26">view source</a></div></div><divclass="public anchor"id="var-compiled-replace-in"><h3>compiled-replace-in</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Version of replace-in that takes in a path precompiled with comp-paths
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L97">view source</a></div></div><divclass="public anchor"id="var-compiled-select"><h3>compiled-select</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Version of select that takes in a path pre-compiled with comp-paths
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L43">view source</a></div></div><divclass="public anchor"id="var-compiled-select-first"><h3>compiled-select-first</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Version of select-first that takes in a path pre-compiled with comp-paths
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L68">view source</a></div></div><divclass="public anchor"id="var-compiled-select-one"><h3>compiled-select-one</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Version of select-one that takes in a path pre-compiled with comp-paths
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L52">view source</a></div></div><divclass="public anchor"id="var-compiled-select-one.21"><h3>compiled-select-one!</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Version of select-one! that takes in a path pre-compiled with comp-paths
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L60">view source</a></div></div><divclass="public anchor"id="var-compiled-setval"><h3>compiled-setval</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Version of setval that takes in a path precompiled with comp-paths
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L89">view source</a></div></div><divclass="public anchor"id="var-compiled-transform"><h3>compiled-transform</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Version of transform that takes in a path pre-compiled with comp-paths
were declared.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L452">view source</a></div></div><divclass="public anchor"id="var-continue-then-stay"><h3>continue-then-stay</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to the provided path and then to the current element. This can be used
to implement post-order traversal.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L506">view source</a></div></div><divclass="public anchor"id="var-continuous-subseqs"><h3>continuous-subseqs</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to every continuous subsequence of elements matching `pred`
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L184">view source</a></div></div><divclass="public anchor"id="var-END"><h3>END</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L204">view source</a></div></div><divclass="public anchor"id="var-filterer"><h3>filterer</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to a view of the current sequence that only contains elements that
were declared.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L359">view source</a></div></div><divclass="public anchor"id="var-FIRST"><h3>FIRST</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L160">view source</a></div></div><divclass="public anchor"id="var-if-path"><h3>if-path</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Like cond-path, but with if semantics.
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L475">view source</a></div></div><divclass="public anchor"id="var-keypath"><h3>keypath</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to the specified key, navigating to nil if it does not exist.
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L274">view source</a></div></div><divclass="public anchor"id="var-LAST"><h3>LAST</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L158">view source</a></div></div><divclass="public anchor"id="var-multi-path"><h3>multi-path</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">A path that branches on multiple paths. For updates,
applies updates to the paths in order.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L481">view source</a></div></div><divclass="public anchor"id="var-must"><h3>must</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to the key only if it exists in the map.
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L284">view source</a></div></div><divclass="public anchor"id="var-must-cache-paths.21"><h3>must-cache-paths!</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Mandate that operations that do inline path factoring and compilation
(select/transform/setval/replace-in/path/etc.) must succeed in
factoring the path into static and dynamic portions. If not, an
error will be thrown and the reasons for not being able to factor
will be printed. Defaults to false, and `(must-cache-paths! false)`
can be used to turn this feature off.
Reasons why it may not be able to factor a path include using
a local symbol, special form, or regular function invocation
where a navigator is expected.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L29">view source</a></div></div><divclass="public anchor"id="var-NIL-.3ELIST"><h3>NIL->LIST</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L424">view source</a></div></div><divclass="public anchor"id="var-NIL-.3ESET"><h3>NIL->SET</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L423">view source</a></div></div><divclass="public anchor"id="var-nil-.3Eval"><h3>nil->val</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to the provided val if the structure is nil. Otherwise it stays
navigated at the structure.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L413">view source</a></div></div><divclass="public anchor"id="var-NIL-.3EVECTOR"><h3>NIL->VECTOR</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L425">view source</a></div></div><divclass="public anchor"id="var-not-selected.3F"><h3>not-selected?</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L346">view source</a></div></div><divclass="public anchor"id="var-params-reset"><h3>params-reset</h3><divclass="usage"><code>(params-reset params-path)</code></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L116">view source</a></div></div><divclass="public anchor"id="var-parser"><h3>parser</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L307">view source</a></div></div><divclass="public anchor"id="var-pred"><h3>pred</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Keeps the element only if it matches the supplied predicate. This is the
late-bound parameterized version of using a function directly in a path.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L406">view source</a></div></div><divclass="public anchor"id="var-putval"><h3>putval</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Adds an external value to the collected vals. Useful when additional arguments
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:
(transform [:a :b (putval 3)] + some-map)</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L439">view source</a></div></div><divclass="public anchor"id="var-replace-in*"><h3>replace-in*</h3><divclass="usage"><code>(replace-in* path transform-fn structure & {:keys [merge-fn], :or {merge-fn concat}})</code></div><divclass="doc"><preclass="plaintext">Similar to transform, except returns a pair of [transformed-structure sequence-of-user-ret].
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
of what was transformed in the data structure.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L100">view source</a></div></div><divclass="public anchor"id="var-select*"><h3>select*</h3><divclass="usage"><code>(select* path structure)</code></div><divclass="doc"><preclass="plaintext">Navigates to and returns a sequence of all the elements specified by the path.
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L46">view source</a></div></div><divclass="public anchor"id="var-select-first*"><h3>select-first*</h3><divclass="usage"><code>(select-first* path structure)</code></div><divclass="doc"><preclass="plaintext">Returns first element found. Not any more efficient than select, just a convenience
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L72">view source</a></div></div><divclass="public anchor"id="var-select-one.21*"><h3>select-one!*</h3><divclass="usage"><code>(select-one!* path structure)</code></div><divclass="doc"><preclass="plaintext">Returns exactly one element, throws exception if zero or multiple elements found
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L63">view source</a></div></div><divclass="public anchor"id="var-select-one*"><h3>select-one*</h3><divclass="usage"><code>(select-one* path structure)</code></div><divclass="doc"><preclass="plaintext">Like select, but returns either one element or nil. Throws exception if multiple elements found
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L55">view source</a></div></div><divclass="public anchor"id="var-selected.3F"><h3>selected?</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Filters the current value based on whether a path finds anything.
e.g. (selected? :vals ALL even?) keeps the current element only if an
even number exists for the :vals key.
The input path may be parameterized, in which case the result of selected?
will be parameterized in the order of which the parameterized navigators
were declared.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L325">view source</a></div></div><divclass="public anchor"id="var-setval*"><h3>setval*</h3><divclass="usage"><code>(setval* path val structure)</code></div><divclass="doc"><preclass="plaintext">Navigates to each value specified by the path and replaces it by val
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L92">view source</a></div></div><divclass="public anchor"id="var-srange"><h3>srange</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to the subsequence bound by the indexes start (inclusive)
and end (exclusive)</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L173">view source</a></div></div><divclass="public anchor"id="var-srange-dynamic"><h3>srange-dynamic</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Uses start-fn and end-fn to determine the bounds of the subsequence
to select when navigating. Each function takes in the structure as input.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L162">view source</a></div></div><divclass="public anchor"id="var-STAY"><h3>STAY</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Stays navigated at the current point. Essentially a no-op navigator.
</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L145">view source</a></div></div><divclass="public anchor"id="var-stay-then-continue"><h3>stay-then-continue</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to the current element and then navigates via the provided path.
This can be used to implement pre-order traversal.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L500">view source</a></div></div><divclass="public anchor"id="var-STOP"><h3>STOP</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Stops navigation at this point. For selection returns nothing and for
transformation returns the structure unchanged</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L134">view source</a></div></div><divclass="public anchor"id="var-submap"><h3>submap</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to the specified submap (using select-keys).
In a transform, that submap in the original map is changed to the new
value of the submap.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L222">view source</a></div></div><divclass="public anchor"id="var-subselect"><h3>subselect</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to a sequence that contains the results of (select ...),
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
"transform".</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L253">view source</a></div></div><divclass="public anchor"id="var-subset"><h3>subset</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to the specified subset (by taking an intersection).
In a transform, that subset in the original set is changed to the
new value of the subset.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L206">view source</a></div></div><divclass="public anchor"id="var-transform*"><h3>transform*</h3><divclass="usage"><code>(transform* path 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
the transform-fn on it</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L83">view source</a></div></div><divclass="public anchor"id="var-transformed"><h3>transformed</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to a view of the current value by transforming it with the
The input path may be parameterized, in which case the result of transformed
will be parameterized in the order of which the parameterized navigators
were declared.</pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L370">view source</a></div></div><divclass="public anchor"id="var-VAL"><h3>VAL</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="src-link"><ahref="https://github.com/foo/bar/blob/master/src/com/rpl/specter.cljx#L156">view source</a></div></div><divclass="public anchor"id="var-view"><h3>view</h3><divclass="usage"></div><divclass="doc"><preclass="plaintext">Navigates to result of running `afn` on the currently navigated value.