17 lines
20 KiB
HTML
17 lines
20 KiB
HTML
<!DOCTYPE html PUBLIC ""
|
||
"">
|
||
<html><head><meta charset="UTF-8" /><title>dog-and-duck.quack.picky.utils 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">Dog-and-duck</span> <span class="project-version">0.1.0-SNAPSHOT</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">Topics</span></h3><ul><li class="depth-1 "><a href="Desiderata.html"><div class="inner"><span>Desiderata</span></div></a></li><li class="depth-1 "><a href="Using_ActivityPub.html"><div class="inner"><span>Using ActivityPub</span></div></a></li><li class="depth-1 "><a href="Validation_Faults.html"><div class="inner"><span>Validation Faults in ActivityPub documents</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction</span></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>dog-and-duck</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>quack</span></div></div></li><li class="depth-3"><a href="dog-and-duck.quack.picky.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>picky</span></div></a></li><li class="depth-4 branch"><a href="dog-and-duck.quack.picky.collections.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>collections</span></div></a></li><li class="depth-4 branch"><a href="dog-and-duck.quack.picky.constants.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>constants</span></div></a></li><li class="depth-4 branch"><a href="dog-and-duck.quack.picky.control-variables.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>control-variables</span></div></a></li><li class="depth-4 branch"><a href="dog-and-duck.quack.picky.fault-messages.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>fault-messages</span></div></a></li><li class="depth-4 branch"><a href="dog-and-duck.quack.picky.required-properties.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>required-properties</span></div></a></li><li class="depth-4 current"><a href="dog-and-duck.quack.picky.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li><li class="depth-3"><a href="dog-and-duck.quack.quack.html"><div class="inner"><span class="tree" style="top: -207px;"><span class="top" style="height: 216px;"></span><span class="bottom"></span></span><span>quack</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree" style="top: -269px;"><span class="top" style="height: 278px;"></span><span class="bottom"></span></span><span>scratch</span></div></div></li><li class="depth-3 branch"><a href="dog-and-duck.scratch.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-3 branch"><a href="dog-and-duck.scratch.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="dog-and-duck.scratch.scratch.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>scratch</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree" style="top: -114px;"><span class="top" style="height: 123px;"></span><span class="bottom"></span></span><span>utils</span></div></div></li><li class="depth-3"><a href="dog-and-duck.utils.process.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>process</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="dog-and-duck.quack.picky.utils.html#var-actor-type.3F"><div class="inner"><span>actor-type?</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-any-or-faults"><div class="inner"><span>any-or-faults</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-coll-object-reference-or-fault"><div class="inner"><span>coll-object-reference-or-fault</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-concat-non-empty"><div class="inner"><span>concat-non-empty</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-cond-make-fault-object"><div class="inner"><span>cond-make-fault-object</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-context.3F"><div class="inner"><span>context?</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-filter-severity"><div class="inner"><span>filter-severity</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-has-activity-type.3F"><div class="inner"><span>has-activity-type?</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-has-actor-type.3F"><div class="inner"><span>has-actor-type?</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-has-context.3F"><div class="inner"><span>has-context?</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-has-type-or-fault"><div class="inner"><span>has-type-or-fault</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-has-type.3F"><div class="inner"><span>has-type?</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-link-or-uri.3F"><div class="inner"><span>link-or-uri?</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-make-fault-object"><div class="inner"><span>make-fault-object</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-nil-if-empty"><div class="inner"><span>nil-if-empty</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-object-faults"><div class="inner"><span>object-faults</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-object-or-uri.3F"><div class="inner"><span>object-or-uri?</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-object-reference-or-faults"><div class="inner"><span>object-reference-or-faults</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-string-or-fault"><div class="inner"><span>string-or-fault</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-truthy.3F"><div class="inner"><span>truthy?</span></div></a></li><li class="depth-1"><a href="dog-and-duck.quack.picky.utils.html#var-verb-type.3F"><div class="inner"><span>verb-type?</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">dog-and-duck.quack.picky.utils</h1><div class="doc"><div class="markdown"><p>Utility functions supporting the picky validator</p></div></div><div class="public anchor" id="var-actor-type.3F"><h3>actor-type?</h3><div class="usage"><code>(actor-type? x)</code></div><div class="doc"><div class="markdown"><p>Return <code>true</code> if the <code>x</code> is a recognised actor type, else <code>false</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L34">view source</a></div></div><div class="public anchor" id="var-any-or-faults"><h3>any-or-faults</h3><div class="usage"><code>(any-or-faults options severity-if-none token)</code></div><div class="doc"><div class="markdown"><p>Return <code>nil</code> if validating one of these options returns <code>nil</code>; otherwise return a list comprising a fault report object with this <code>severity-if-none</code> and this token followed by all the fault reports from validating each option.</p>
|
||
<p>There are several places - but especially in validating collections - where there are several different valid configurations, but few or no properties are always required.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L196">view source</a></div></div><div class="public anchor" id="var-coll-object-reference-or-fault"><h3>coll-object-reference-or-fault</h3><div class="usage"><code>(coll-object-reference-or-fault value expected-type severity token)</code></div><div class="doc"><div class="markdown"><p>As object-reference-or-fault, except <code>value</code> argument may also be a list of objects and/or object references.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L302">view source</a></div></div><div class="public anchor" id="var-concat-non-empty"><h3>concat-non-empty</h3><div class="usage"><code>(concat-non-empty & lists)</code></div><div class="doc"><div class="markdown"><p>Quick function to replace the pattern (nil-if-empty (remove nil? (concat …))) which I’m using a lot!</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L166">view source</a></div></div><div class="public anchor" id="var-cond-make-fault-object"><h3>cond-make-fault-object</h3><h4 class="type">macro</h4><div class="usage"><code>(cond-make-fault-object v severity token)</code></div><div class="doc"><div class="markdown"><p>If <code>v</code> is <code>false</code> or <code>nil</code>, return a fault object with this <code>severity</code> and <code>token</code>, else return nil.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L211">view source</a></div></div><div class="public anchor" id="var-context.3F"><h3>context?</h3><div class="usage"><code>(context? x)</code></div><div class="doc"><div class="markdown"><p>Returns <code>true</code> iff <code>x</code> quacks like an ActivityStreams context, else false.</p>
|
||
<p>A context is either 1. the URI (actually an IRI) <code>activitystreams-context-uri</code>, or 2. a collection comprising that URI and a map.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L115">view source</a></div></div><div class="public anchor" id="var-filter-severity"><h3>filter-severity</h3><div class="usage"><code>(filter-severity reports severity)</code></div><div class="doc"><div class="markdown"><p>Return a list of reports taken from these <code>reports</code> where the severity of the report is greater than this or equal to this <code>severity</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L97">view source</a></div></div><div class="public anchor" id="var-has-activity-type.3F"><h3>has-activity-type?</h3><div class="usage"><code>(has-activity-type? x)</code></div><div class="doc"><div class="markdown"><p>Return <code>true</code> if the object <code>x</code> has a type which is an activity type, else <code>false</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L79">view source</a></div></div><div class="public anchor" id="var-has-actor-type.3F"><h3>has-actor-type?</h3><div class="usage"><code>(has-actor-type? x)</code></div><div class="doc"><div class="markdown"><p>Return <code>true</code> if the object <code>x</code> has a type which is an actor type, else <code>false</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L88">view source</a></div></div><div class="public anchor" id="var-has-context.3F"><h3>has-context?</h3><h4 class="type">macro</h4><div class="usage"><code>(has-context? x)</code></div><div class="doc"><div class="markdown"><p>True if <code>x</code> is an ActivityStreams object with a valid context, else <code>false</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L130">view source</a></div></div><div class="public anchor" id="var-has-type-or-fault"><h3>has-type-or-fault</h3><div class="usage"><code>(has-type-or-fault x acceptable severity token)</code></div><div class="doc"><div class="markdown"><p>If object <code>x</code> has a <code>:type</code> value which is <code>acceptable</code>, return <code>nil</code>; else return a fault object with this <code>severity</code> and <code>token</code>.</p>
|
||
<p><code>acceptable</code> may be passed as either nil, a string, or a set of strings. If <code>acceptable</code> is <code>nil</code>, no type specific tests will be performed.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L172">view source</a></div></div><div class="public anchor" id="var-has-type.3F"><h3>has-type?</h3><div class="usage"><code>(has-type? x type)</code></div><div class="doc"><div class="markdown"><p>Return <code>true</code> if object <code>x</code> has type <code>type</code>, else <code>false</code>.</p>
|
||
<p>The values of <code>type</code> fields of ActivityStreams objects may be lists; they are considered to have a type if the type token is a member of the list.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L45">view source</a></div></div><div class="public anchor" id="var-link-or-uri.3F"><h3>link-or-uri?</h3><h4 class="type">macro</h4><div class="usage"><code>(link-or-uri? x)</code></div><div class="doc"><div class="markdown"><p>Very basic check that <code>x</code> is either a link object or a URI.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L67">view source</a></div></div><div class="public anchor" id="var-make-fault-object"><h3>make-fault-object</h3><div class="usage"><code>(make-fault-object severity fault)</code></div><div class="doc"><div class="markdown"><p>Return a fault object with these <code>severity</code>, <code>fault</code> and <code>narrative</code> values.</p>
|
||
<p>An ActivityPub object MUST have a globally unique ID. Whether this is meaningful depends on whether we persist fault report objects and serve them, which at present I have no plans to do.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L135">view source</a></div></div><div class="public anchor" id="var-nil-if-empty"><h3>nil-if-empty</h3><h4 class="type">macro</h4><div class="usage"><code>(nil-if-empty x)</code></div><div class="doc"><div class="markdown"><p>if <code>x</code> is an empty collection, return <code>nil</code>; else return <code>x</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L160">view source</a></div></div><div class="public anchor" id="var-object-faults"><h3>object-faults</h3><div class="usage"><code>(object-faults x)</code><code>(object-faults x expected-type)</code></div><div class="doc"><div class="markdown"><p>Return a list of faults found in object <code>x</code>, or <code>nil</code> if none are.</p>
|
||
<p>If <code>expected-type</code> is also passed, verify that <code>x</code> has <code>expected-type</code>. <code>expected-type</code> may be passed as a string or as a set of strings. Detailed verification of the particular features of types is not done here.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L229">view source</a></div></div><div class="public anchor" id="var-object-or-uri.3F"><h3>object-or-uri?</h3><div class="usage"><code>(object-or-uri? x)</code></div><div class="doc"><div class="markdown"><p>Very basic check that <code>x</code> is either an object or a URI.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L57">view source</a></div></div><div class="public anchor" id="var-object-reference-or-faults"><h3>object-reference-or-faults</h3><div class="usage"><code>(object-reference-or-faults value expected-type severity token)</code></div><div class="doc"><div class="markdown"><p>If this <code>value</code> is either </p>
|
||
<ol>
|
||
<li>an object of <code>expected-type</code>;</li>
|
||
<li>a URI referencing an object of <code>expected-type</code>; or</li>
|
||
<li>a link object referencing an object of <code>expected-type</code></li>
|
||
</ol>
|
||
<p>and no faults are returned from validating the linked object, then return <code>nil</code>; else return a sequence comprising a fault object with this <code>severity</code> and <code>token</code>, prepended to the faults returned.</p>
|
||
<p>As with <code>has-type-or-fault</code> (q.v.), <code>expected-type</code> may be passed as a string, as a set of strings, or <code>nil</code> (indicating the type of the referenced object should not be checked).</p>
|
||
<p><strong>NOTE THAT</strong> if <code>*reify-refs*</code> is <code>false</code>, referenced objects will not actually be checked.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L256">view source</a></div></div><div class="public anchor" id="var-string-or-fault"><h3>string-or-fault</h3><div class="usage"><code>(string-or-fault value severity token)</code><code>(string-or-fault value severity token pattern)</code></div><div class="doc"><div class="markdown"><p>If this <code>value</code> is not a string, return a fault object with this <code>severity</code> and <code>token</code>, else <code>nil</code>. If <code>pattern</code> is also passed, it is expected to be a Regex, and the fault object will be returned unless <code>value</code> matches the <code>pattern</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L217">view source</a></div></div><div class="public anchor" id="var-truthy.3F"><h3>truthy?</h3><div class="usage"><code>(truthy? x)</code></div><div class="doc"><div class="markdown"><p>Return <code>true</code> if <code>x</code> is truthy, else <code>false</code>. There must be some more idiomatic way to do this?</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L39">view source</a></div></div><div class="public anchor" id="var-verb-type.3F"><h3>verb-type?</h3><div class="usage"><code>(verb-type? x)</code></div><div class="doc"><div class="markdown"><p><code>true</code> if <code>x</code>, a string, represents a recognised ActivityStreams activity type.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/dog-and-duck/blob/master/src/dog_and_duck/quack/picky/utils.clj#L73">view source</a></div></div></div></body></html> |