<html><head><metacharset="UTF-8"/><linkhref="css/default.css"rel="stylesheet"type="text/css"/><scriptsrc="js/jquery.min.js"type="text/javascript"></script><scriptsrc="js/page_effects.js"type="text/javascript"></script><title>com.rpl.specter.protocols documentation</title></head><body><divid="header"><h2>Generated by <ahref="https://github.com/weavejester/codox">Codox</a></h2><h1><ahref="index.html"><spanclass="project-title"><spanclass="project-name">Specter</span><spanclass="project-version">1.1.1-SNAPSHOT</span></span></a></h1></div><divclass="sidebar primary"><h3class="no-link"><spanclass="inner">Project</span></h3><ulclass="index-link"><liclass="depth-1 "><ahref="index.html"><divclass="inner">Index</div></a></li></ul><h3class="no-link"><spanclass="inner">Namespaces</span></h3><ul><liclass="depth-1"><divclass="no-link"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>com</span></div></div></li><liclass="depth-2"><divclass="no-link"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>rpl</span></div></div></li><liclass="depth-3"><ahref="com.rpl.specter.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>specter</span></div></a></li><liclass="depth-4 branch current"><ahref="com.rpl.specter.protocols.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>protocols</span></div></a></li><liclass="depth-4 branch"><ahref="com.rpl.specter.transients.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>transients</span></div></a></li><liclass="depth-4"><ahref="com.rpl.specter.zipper.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>zipper</span></div></a></li></ul></div><divclass="sidebar secondary"><h3><ahref="#top"><spanclass="inner">Public Vars</span></a></h3><ul><liclass="depth-1"><ahref="com.rpl.specter.protocols.html#var-Collector"><divclass="inner"><span>Collector</span></div></a></li><liclass="depth-2"><ahref="com.rpl.specter.protocols.html#var-collect-val"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>collect-val</span></div></a></li><liclass="depth-1"><ahref="com.rpl.specter.protocols.html#var-ImplicitNav"><divclass="inner"><span>ImplicitNav</span></div></a></li><liclass="depth-2"><ahref="com.rpl.specter.protocols.html#var-implicit-nav"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>implicit-nav</span></div></a></li><liclass="depth-1"><ahref="com.rpl.specter.protocols.html#var-RichNavigator"><divclass="inner"><span>RichNavigator</span></div></a></li><liclass="depth-2 branch"><ahref="com.rpl.specter.protocols.html#var-select*"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>select*</span></div></a></li><liclass="depth-2"><ahref="com.rpl.specter.protocols.html#var-transform*"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>transform*</span></div></a></li></ul></div><divclass="namespace-docs"id="content"><h1class="anchor"id="top">com.rpl.specter.protocols</h1><divclass="doc"><preclass="plaintext"></pre></div><divclass="public anchor"id="var-Collector"><h3>Collector</h3><h4class="type">protocol</h4><divclass="usage"></div><divclass="doc"><preclass="plaintext">Do not use this protocol directly. All navigators must be created using
macros in com.rpl.specter namespace.</pre></div><divclass="members"><h4>members</h4><divclass="inner"><divclass="public anchor"id="var-collect-val"><h3>collect-val</h3><divclass="usage"><code>(collect-val this structure)</code></div><divclass="doc"><preclass="plaintext"></pre></div></div></div></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/1.1.1-SNAPSHOT/src/clj/com/rpl/specter/protocols.cljc#L21">view source</a></div></div><divclass="public anchor"id="var-ImplicitNav"><h3>ImplicitNav</h3><h4class="type">protocol</h4><divclass="usage"></div><divclass="doc"><preclass="plaintext"></pre></div><divclass="members"><h4>members</h4><divclass="inner"><divclass="public anchor"id="var-implicit-nav"><h3>implicit-nav</h3><divclass="usage"><code>(implicit-nav obj)</code></div><divclass="doc"><preclass="plaintext"></pre></div></div></div></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/1.1.1-SNAPSHOT/src/clj/com/rpl/specter/protocols.cljc#L26">view source</a></div></div><divclass="public anchor"id="var-RichNavigator"><h3>RichNavigator</h3><h4class="type">protocol</h4><divclass="usage"></div><divclass="doc"><preclass="plaintext">Do not use this protocol directly. All navigators must be created using macros
in com.rpl.specter namespace.</pre></div><divclass="members"><h4>members</h4><divclass="inner"><divclass="public anchor"id="var-select*"><h3>select*</h3><divclass="usage"><code>(select* this vals structure next-fn)</code></div><divclass="doc"><preclass="plaintext">An implementation of `select*` must call `next-fn` on each
</pre></div></div><divclass="public anchor"id="var-transform*"><h3>transform*</h3><divclass="usage"><code>(transform* this vals structure next-fn)</code></div><divclass="doc"><preclass="plaintext">An implementation of `transform*` must use `next-fn` to transform
back into `structure`. Everything else in `structure` must be unchanged.</pre></div></div></div></div><divclass="src-link"><ahref="https://github.com/nathanmarz/specter/tree/1.1.1-SNAPSHOT/src/clj/com/rpl/specter/protocols.cljc#L3">view source</a></div></div></div></body></html>