adl-support/docs/adl-support.utils.html

3 lines
28 KiB
HTML

<!DOCTYPE html PUBLIC ""
"">
<html><head><meta charset="UTF-8" /><title>adl-support.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">Adl-support</span> <span class="project-version">0.1.7-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">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>adl-support</span></div></div></li><li class="depth-2 branch"><a href="adl-support.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-2 branch"><a href="adl-support.filters.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>filters</span></div></a></li><li class="depth-2 branch"><a href="adl-support.forms-support.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>forms-support</span></div></a></li><li class="depth-2 branch"><a href="adl-support.print-usage.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>print-usage</span></div></a></li><li class="depth-2 branch"><a href="adl-support.rest-support.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>rest-support</span></div></a></li><li class="depth-2 branch"><a href="adl-support.tags.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>tags</span></div></a></li><li class="depth-2 current"><a href="adl-support.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</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="adl-support.utils.html#var-*locale*"><div class="inner"><span>*locale*</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-*output-path*"><div class="inner"><span>*output-path*</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-*verbosity*"><div class="inner"><span>*verbosity*</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-all-properties"><div class="inner"><span>all-properties</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-attributes"><div class="inner"><span>attributes</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-base-type"><div class="inner"><span>base-type</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-capitalise"><div class="inner"><span>capitalise</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-child"><div class="inner"><span>child</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-child-with-tag"><div class="inner"><span>child-with-tag</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-children"><div class="inner"><span>children</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-children-with-tag"><div class="inner"><span>children-with-tag</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-column-name"><div class="inner"><span>column-name</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-descendant-with-tag"><div class="inner"><span>descendant-with-tag</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-descendants-with-tag"><div class="inner"><span>descendants-with-tag</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-distinct-properties"><div class="inner"><span>distinct-properties</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-editor-name"><div class="inner"><span>editor-name</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-element.3F"><div class="inner"><span>element?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-emit-header"><div class="inner"><span>emit-header</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-entity-by-name"><div class="inner"><span>entity-by-name</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-entity-for-property"><div class="inner"><span>entity-for-property</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-entity.3F"><div class="inner"><span>entity?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-find-permissions"><div class="inner"><span>find-permissions</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-formal-primary-key.3F"><div class="inner"><span>formal-primary-key?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-has-non-key-properties.3F"><div class="inner"><span>has-non-key-properties?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-has-primary-key.3F"><div class="inner"><span>has-primary-key?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-insertable-key-properties"><div class="inner"><span>insertable-key-properties</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-insertable-properties"><div class="inner"><span>insertable-properties</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-insertable.3F"><div class="inner"><span>insertable?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-is-quotable-type.3F"><div class="inner"><span>is-quotable-type?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-key-names"><div class="inner"><span>key-names</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-key-properties"><div class="inner"><span>key-properties</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-link-table-name"><div class="inner"><span>link-table-name</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-link-table.3F"><div class="inner"><span>link-table?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-list-related-query-name"><div class="inner"><span>list-related-query-name</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-order-preserving-set"><div class="inner"><span>order-preserving-set</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-path-part"><div class="inner"><span>path-part</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-permission-groups"><div class="inner"><span>permission-groups</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-pretty-name"><div class="inner"><span>pretty-name</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-prompt"><div class="inner"><span>prompt</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-properties"><div class="inner"><span>properties</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-property-for-field"><div class="inner"><span>property-for-field</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-property.3F"><div class="inner"><span>property?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-required-properties"><div class="inner"><span>required-properties</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-safe-name"><div class="inner"><span>safe-name</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-singularise"><div class="inner"><span>singularise</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-sort-by-name"><div class="inner"><span>sort-by-name</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-system-generated.3F"><div class="inner"><span>system-generated?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-type-for-defined"><div class="inner"><span>type-for-defined</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-typedef"><div class="inner"><span>typedef</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-unique-link.3F"><div class="inner"><span>unique-link?</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-user-distinct-properties"><div class="inner"><span>user-distinct-properties</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-user-distinct-property-names"><div class="inner"><span>user-distinct-property-names</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-visible-to"><div class="inner"><span>visible-to</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-volatility"><div class="inner"><span>volatility</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-wrap-lines"><div class="inner"><span>wrap-lines</span></div></a></li><li class="depth-1"><a href="adl-support.utils.html#var-writeable-by"><div class="inner"><span>writeable-by</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">adl-support.utils</h1><div class="doc"><div class="markdown"><p>Application Description Language support - utility functions.</p></div></div><div class="public anchor" id="var-*locale*"><h3>*locale*</h3><h4 class="dynamic">dynamic</h4><div class="usage"></div><div class="doc"><div class="markdown"><p>The locale for which files will be generated.</p></div></div></div><div class="public anchor" id="var-*output-path*"><h3>*output-path*</h3><h4 class="dynamic">dynamic</h4><div class="usage"></div><div class="doc"><div class="markdown"><p>The path to which generated files will be written.</p></div></div></div><div class="public anchor" id="var-*verbosity*"><h3>*verbosity*</h3><h4 class="dynamic">dynamic</h4><div class="usage"></div><div class="doc"><div class="markdown"><p>The verbosity of output from the generator.</p></div></div></div><div class="public anchor" id="var-all-properties"><h3>all-properties</h3><h4 class="type">macro</h4><div class="usage"><code>(all-properties entity)</code></div><div class="doc"><div class="markdown"><p>Return all properties of this <code>entity</code> (including key properties).</p></div></div></div><div class="public anchor" id="var-attributes"><h3>attributes</h3><div class="usage"><code>(attributes element)</code><code>(attributes element predicate)</code></div><div class="doc"><div class="markdown"><p>Return the attributes of this <code>element</code>; if <code>predicate</code> is passed, return only those attributes satisfying the predicate.</p></div></div></div><div class="public anchor" id="var-base-type"><h3>base-type</h3><div class="usage"><code>(base-type property application)</code></div><div class="doc"><div class="markdown"><p>FIXME: write docs</p></div></div></div><div class="public anchor" id="var-capitalise"><h3>capitalise</h3><div class="usage"><code>(capitalise s)</code></div><div class="doc"><div class="markdown"><p>Return a string like <code>s</code> but with each token capitalised.</p></div></div></div><div class="public anchor" id="var-child"><h3>child</h3><div class="usage"><code>(child element predicate)</code></div><div class="doc"><div class="markdown"><p>Return the first child of this <code>element</code> satisfying this <code>predicate</code>.</p></div></div></div><div class="public anchor" id="var-child-with-tag"><h3>child-with-tag</h3><div class="usage"><code>(child-with-tag element tag)</code><code>(child-with-tag element tag predicate)</code></div><div class="doc"><div class="markdown"><p>Return the first child of this <code>element</code> which has this <code>tag</code>; if <code>element</code> is <code>nil</code>, return <code>nil</code>. If <code>predicate</code> is supplied, return only the first child with the specified <code>tag</code> which satisfies the <code>predicate</code>.</p></div></div></div><div class="public anchor" id="var-children"><h3>children</h3><div class="usage"><code>(children element)</code><code>(children element predicate)</code></div><div class="doc"><div class="markdown"><p>Return the children of this <code>element</code>; if <code>predicate</code> is passed, return only those children satisfying the predicate.</p></div></div></div><div class="public anchor" id="var-children-with-tag"><h3>children-with-tag</h3><div class="usage"><code>(children-with-tag element tag)</code><code>(children-with-tag element tag predicate)</code></div><div class="doc"><div class="markdown"><p>Return all children of this <code>element</code> which have this <code>tag</code>; if <code>element</code> is <code>nil</code>, return <code>nil</code>. If <code>predicate</code> is supplied, return only those children with the specified <code>tag</code> which satisfy the <code>predicate</code>.</p></div></div></div><div class="public anchor" id="var-column-name"><h3>column-name</h3><div class="usage"><code>(column-name property)</code></div><div class="doc"><div class="markdown"><p>Return, as a string, the name for the column which represents this <code>property</code>.</p></div></div></div><div class="public anchor" id="var-descendant-with-tag"><h3>descendant-with-tag</h3><div class="usage"><code>(descendant-with-tag element tag)</code><code>(descendant-with-tag element tag predicate)</code></div><div class="doc"><div class="markdown"><p>Return the first descendant of this <code>element</code>, recursively, which has this <code>tag</code>. If <code>predicate</code> is specified, return the first also satisfying this <code>predicate</code>.</p></div></div></div><div class="public anchor" id="var-descendants-with-tag"><h3>descendants-with-tag</h3><div class="usage"><code>(descendants-with-tag element tag)</code><code>(descendants-with-tag element tag predicate)</code></div><div class="doc"><div class="markdown"><p>Return all descendants of this <code>element</code>, recursively, which have this <code>tag</code>. If <code>predicate</code> is specified, return only those also satisfying this <code>predicate</code>.</p></div></div></div><div class="public anchor" id="var-distinct-properties"><h3>distinct-properties</h3><div class="usage"><code>(distinct-properties entity)</code></div><div class="doc"><div class="markdown"><p>FIXME: write docs</p></div></div></div><div class="public anchor" id="var-editor-name"><h3>editor-name</h3><div class="usage"><code>(editor-name entity application)</code></div><div class="doc"><div class="markdown"><p>Return the path-part of the editor form for this <code>entity</code>. Note: assumes the editor form is the first form listed for the entity.</p></div></div></div><div class="public anchor" id="var-element.3F"><h3>element?</h3><div class="usage"><code>(element? o)</code></div><div class="doc"><div class="markdown"><p>True if <code>o</code> is a Clojure representation of an XML element.</p></div></div></div><div class="public anchor" id="var-emit-header"><h3>emit-header</h3><div class="usage"><code>(emit-header prefix &amp; content)</code></div><div class="doc"><div class="markdown"><p>Emit this <code>content</code> as a sequence of wrapped lines each prefixed with <code>prefix</code>, and the whole delimited by rules.</p></div></div></div><div class="public anchor" id="var-entity-by-name"><h3>entity-by-name</h3><h4 class="type">macro</h4><div class="usage"><code>(entity-by-name entity-name application)</code></div><div class="doc"><div class="markdown"><p>Return the entity with this <code>entity-name</code> in this <code>application</code>. TODO: Candidate for move to adl-support.utils.</p></div></div></div><div class="public anchor" id="var-entity-for-property"><h3>entity-for-property</h3><div class="usage"><code>(entity-for-property property application)</code></div><div class="doc"><div class="markdown"><p>If this <code>property</code> references an entity, return that entity from this <code>application</code></p></div></div></div><div class="public anchor" id="var-entity.3F"><h3>entity?</h3><div class="usage"><code>(entity? x)</code></div><div class="doc"><div class="markdown"><p>Return true if <code>x</code> is an ADL entity.</p></div></div></div><div class="public anchor" id="var-find-permissions"><h3>find-permissions</h3><div class="usage"><code>(find-permissions &amp; elements)</code></div><div class="doc"><div class="markdown"><p>Return appropriate the permissions of the first of these <code>elements</code> which has permissions.</p></div></div></div><div class="public anchor" id="var-formal-primary-key.3F"><h3>formal-primary-key?</h3><div class="usage"><code>(formal-primary-key? prop-or-name entity)</code></div><div class="doc"><div class="markdown"><p>Does this <code>prop-or-name</code> appear to be a property (or the name of a property) which is a formal primary key of this entity?</p></div></div></div><div class="public anchor" id="var-has-non-key-properties.3F"><h3>has-non-key-properties?</h3><div class="usage"><code>(has-non-key-properties? entity)</code></div><div class="doc"><div class="markdown"><p>FIXME: write docs</p></div></div></div><div class="public anchor" id="var-has-primary-key.3F"><h3>has-primary-key?</h3><div class="usage"><code>(has-primary-key? entity)</code></div><div class="doc"><div class="markdown"><p>FIXME: write docs</p></div></div></div><div class="public anchor" id="var-insertable-key-properties"><h3>insertable-key-properties</h3><h4 class="type">macro</h4><div class="usage"><code>(insertable-key-properties entity)</code></div><div class="doc"><div class="markdown"><p>FIXME: write docs</p></div></div></div><div class="public anchor" id="var-insertable-properties"><h3>insertable-properties</h3><h4 class="type">macro</h4><div class="usage"><code>(insertable-properties entity)</code></div><div class="doc"><div class="markdown"><p>Return all the properties of this <code>entity</code> (including key properties) into which user-supplied data can be inserted</p></div></div></div><div class="public anchor" id="var-insertable.3F"><h3>insertable?</h3><div class="usage"><code>(insertable? property)</code></div><div class="doc"><div class="markdown"><p>Return <code>true</code> it the value of this <code>property</code> may be set from user-supplied data.</p></div></div></div><div class="public anchor" id="var-is-quotable-type.3F"><h3>is-quotable-type?</h3><div class="usage"><code>(is-quotable-type? property application)</code></div><div class="doc"><div class="markdown"><p>True if the value for this field should be quoted.</p></div></div></div><div class="public anchor" id="var-key-names"><h3>key-names</h3><div class="usage"><code>(key-names entity)</code><code>(key-names entity as-keywords?)</code></div><div class="doc"><div class="markdown"><p>FIXME: write docs</p></div></div></div><div class="public anchor" id="var-key-properties"><h3>key-properties</h3><h4 class="type">macro</h4><div class="usage"><code>(key-properties entity)</code></div><div class="doc"><div class="markdown"><p>FIXME: write docs</p></div></div></div><div class="public anchor" id="var-link-table-name"><h3>link-table-name</h3><div class="usage"><code>(link-table-name e1 e2)</code><code>(link-table-name property e1 e2)</code></div><div class="doc"><div class="markdown"><p>Canonical name of a link table between entity <code>e1</code> and entity <code>e2</code>. However, there may be different links between the same two tables with different semantics; if <code>property</code> is specified, and if more than one property in <code>e1</code> links to <code>e2</code>, generate a more specific link name.</p></div></div></div><div class="public anchor" id="var-link-table.3F"><h3>link-table?</h3><div class="usage"><code>(link-table? entity)</code></div><div class="doc"><div class="markdown"><p>Return true if this <code>entity</code> represents a link table.</p></div></div></div><div class="public anchor" id="var-list-related-query-name"><h3>list-related-query-name</h3><div class="usage"><code>(list-related-query-name property nearside farside as-symbol?)</code><code>(list-related-query-name property nearside farside)</code></div><div class="doc"><div class="markdown"><p>Return the canonical name of the HugSQL query to return all records on <code>farside</code> which match a given record on <code>nearside</code>, where <code>nearide</code> and <code>farside</code> are both entities.</p></div></div></div><div class="public anchor" id="var-order-preserving-set"><h3>order-preserving-set</h3><div class="usage"><code>(order-preserving-set collection)</code></div><div class="doc"><div class="markdown"><p>The Clojure <code>set</code> function does not preserve the order in which elements are passed to it. This function is like <code>set</code>, except 1. It returns a list, not a hashset, and 2. It is order-preserving.</p></div></div></div><div class="public anchor" id="var-path-part"><h3>path-part</h3><div class="usage"><code>(path-part form entity application)</code></div><div class="doc"><div class="markdown"><p>Return the URL path part for this <code>form</code> of this <code>entity</code> within this <code>application</code>. Note that <code>form</code> may be a Clojure XML representation of a <code>form</code>, <code>list</code> or <code>page</code> ADL element, or may be one of the keywords <code>:form</code>, <code>:list</code>, <code>:page</code> in which case the first child of the <code>entity</code> of the specified type will be used.</p></div></div></div><div class="public anchor" id="var-permission-groups"><h3>permission-groups</h3><div class="usage"><code>(permission-groups permissions predicate)</code></div><div class="doc"><div class="markdown"><p>Return a list of names of groups to which this <code>predicate</code> is true of some permission taken from these <code>permissions</code>, else nil.</p></div></div></div><div class="public anchor" id="var-pretty-name"><h3>pretty-name</h3><div class="usage"><code>(pretty-name element)</code></div><div class="doc"><div class="markdown"><p>Return a version of the name of this <code>element</code> (entity, field, form, list, page, property) suitable for use in text visible to the user.</p></div></div></div><div class="public anchor" id="var-prompt"><h3>prompt</h3><div class="usage"><code>(prompt field-or-property form entity application)</code></div><div class="doc"><div class="markdown"><p>Return an appropriate prompt for the given <code>field-or-property</code> taken from this <code>form</code> of this <code>entity</code> of this <code>application</code>, in the context of the current binding of <code>*locale*</code>. TODO: something more sophisticated about i18n</p></div></div></div><div class="public anchor" id="var-properties"><h3>properties</h3><h4 class="type">macro</h4><div class="usage"><code>(properties entity)</code></div><div class="doc"><div class="markdown"><p>Return all the properties of this <code>entity</code>.</p></div></div></div><div class="public anchor" id="var-property-for-field"><h3>property-for-field</h3><div class="usage"><code>(property-for-field field entity)</code></div><div class="doc"><div class="markdown"><p>Return the property within this <code>entity</code> which matches this <code>field</code>.</p></div></div></div><div class="public anchor" id="var-property.3F"><h3>property?</h3><div class="usage"><code>(property? o)</code></div><div class="doc"><div class="markdown"><p>True if <code>o</code> is a property.</p></div></div></div><div class="public anchor" id="var-required-properties"><h3>required-properties</h3><div class="usage"><code>(required-properties entity)</code></div><div class="doc"><div class="markdown"><p>Return the properties of this <code>entity</code> which are required and are not system generated.</p></div></div></div><div class="public anchor" id="var-safe-name"><h3>safe-name</h3><div class="usage"><code>(safe-name o)</code><code>(safe-name o convention)</code></div><div class="doc"><div class="markdown"><p>Return a safe name for the object <code>o</code>, given the specified <code>convention</code>. <code>o</code> is expected to be either a string or an element. Recognised values for <code>convention</code> are: #{:c :c-sharp :java :sql}</p></div></div></div><div class="public anchor" id="var-singularise"><h3>singularise</h3><div class="usage"><code>(singularise string)</code></div><div class="doc"><div class="markdown"><p>Attempt to construct an idiomatic English-language singular of this string.</p></div></div></div><div class="public anchor" id="var-sort-by-name"><h3>sort-by-name</h3><div class="usage"><code>(sort-by-name elements)</code></div><div class="doc"><div class="markdown"><p>Sort these <code>elements</code> by their <code>:name</code> attribute.</p></div></div></div><div class="public anchor" id="var-system-generated.3F"><h3>system-generated?</h3><div class="usage"><code>(system-generated? property)</code></div><div class="doc"><div class="markdown"><p>True if the value of the <code>property</code> is system generated, and should not be set by the user.</p></div></div></div><div class="public anchor" id="var-type-for-defined"><h3>type-for-defined</h3><div class="usage"><code>(type-for-defined property application)</code></div><div class="doc"><div class="markdown"><p>FIXME: write docs</p></div></div></div><div class="public anchor" id="var-typedef"><h3>typedef</h3><div class="usage"><code>(typedef property application)</code></div><div class="doc"><div class="markdown"><p>If this <code>property</code> is of type <code>defined</code>, return its type definition from this <code>application</code>, else nil.</p></div></div></div><div class="public anchor" id="var-unique-link.3F"><h3>unique-link?</h3><div class="usage"><code>(unique-link? e1 e2)</code></div><div class="doc"><div class="markdown"><p>True if there is exactly one link between entities <code>e1</code> and <code>e2</code>.</p></div></div></div><div class="public anchor" id="var-user-distinct-properties"><h3>user-distinct-properties</h3><div class="usage"><code>(user-distinct-properties entity)</code></div><div class="doc"><div class="markdown"><p>Return the properties of this <code>entity</code> which are user distinct</p></div></div></div><div class="public anchor" id="var-user-distinct-property-names"><h3>user-distinct-property-names</h3><div class="usage"><code>(user-distinct-property-names entity)</code></div><div class="doc"><div class="markdown"><p>Return, as a set, the names of properties which are user distinct</p></div></div></div><div class="public anchor" id="var-visible-to"><h3>visible-to</h3><div class="usage"><code>(visible-to permissions)</code></div><div class="doc"><div class="markdown"><p>Return a list of names of groups to which are granted read access, given these <code>permissions</code>, else nil.</p></div></div></div><div class="public anchor" id="var-volatility"><h3>volatility</h3><div class="usage"><code>(volatility entity)</code></div><div class="doc"><div class="markdown"><p>Return the cache ttl in seconds for records of this <code>entity</code>.</p></div></div></div><div class="public anchor" id="var-wrap-lines"><h3>wrap-lines</h3><div class="usage"><code>(wrap-lines width text)</code><code>(wrap-lines text)</code></div><div class="doc"><div class="markdown"><p>Wrap lines in this <code>text</code> to this <code>width</code>; return a list of lines.</p></div></div></div><div class="public anchor" id="var-writeable-by"><h3>writeable-by</h3><div class="usage"><code>(writeable-by permissions)</code><code>(writeable-by permissions has-value?)</code></div><div class="doc"><div class="markdown"><p>Return a list of names of groups to which are granted write access, given these <code>permissions</code>, else nil. TODO: TOTHINKABOUT: properties are also writeable by <code>insert</code> and <code>noedit</code>, but only if the current value is nil.</p></div></div></div></div></body></html>