# Directive

<pre class="nacara-api__signature"><code><span class="tok-keyword">type</span> <span class="tok-type">Directive</span> <span class="tok-operator">=</span>
    <span class="tok-punctuation">{</span>
        <a class="tok-property" href="#directivename">DirectiveName</a><span class="tok-punctuation">:</span> <span class="tok-type">string</span>
        <a class="tok-property" href="#decode">Decode</a><span class="tok-punctuation">:</span> <span class="tok-type">int</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">string</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">Result</span><span class="tok-operator">&lt;</span><span class="tok-type">obj</span><span class="tok-punctuation">,</span><span class="tok-type">string</span><span class="tok-operator">&gt;</span>
        <a class="tok-property" href="#renderwith">RenderWith</a><span class="tok-punctuation">:</span> <a class="tok-type" href="/Partas.Nacara.Plugins/reference/partas-nacara-plugins-directives/nacara-plugins/directivecontext/">DirectiveContext</a> <span class="tok-operator">-&gt;</span> <span class="tok-type">obj</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">ReactElement</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">ReactElement</span>
    <span class="tok-punctuation">}</span></code></pre>

| | |
|---|---|
| Assembly | `Partas.Nacara.Plugins.Directives` |

A directive: its name, how to read its arguments, what to render.

Neither function is generic, because directives of different argument types sit in one
list. The type the author declared is restored inside them, which is why they are not
public.

## Fields

<div class="nacara-api__entry" id="directivename">
<a class="nacara-api__anchor"
                           href="#directivename"
                           aria-label="Link to DirectiveName"
                           data-pagefind-ignore></a>
<details class="nacara-api__member">
<summary>
<pre class="nacara-api__signature nacara-api__signature--hanging"><code><span class="tok-property">DirectiveName</span><span class="tok-punctuation">:</span> <span class="tok-type">string</span></code></pre>
</summary>
<div class="nacara-api__body">

The word after `:::`.


</div>
</details>
</div>

<div class="nacara-api__entry" id="decode">
<a class="nacara-api__anchor"
                           href="#decode"
                           aria-label="Link to Decode"
                           data-pagefind-ignore></a>
<details class="nacara-api__member">
<summary>
<pre class="nacara-api__signature nacara-api__signature--hanging"><code><span class="tok-property">Decode</span><span class="tok-punctuation">:</span> <span class="tok-type">int</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">string</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">Result</span><span class="tok-operator">&lt;</span><span class="tok-type">obj</span><span class="tok-punctuation">,</span><span class="tok-type">string</span><span class="tok-operator">&gt;</span></code></pre>
</summary>
<div class="nacara-api__body">

Reads the opening line's arguments, boxed so directives of different argument
types can sit in one list.


</div>
</details>
</div>

<div class="nacara-api__entry" id="renderwith">
<a class="nacara-api__anchor"
                           href="#renderwith"
                           aria-label="Link to RenderWith"
                           data-pagefind-ignore></a>
<details class="nacara-api__member">
<summary>
<pre class="nacara-api__signature nacara-api__signature--hanging"><code><span class="tok-property">RenderWith</span><span class="tok-punctuation">:</span> <a class="tok-type" href="/Partas.Nacara.Plugins/reference/partas-nacara-plugins-directives/nacara-plugins/directivecontext/">DirectiveContext</a> <span class="tok-operator">-&gt;</span> <span class="tok-type">obj</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">ReactElement</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">ReactElement</span></code></pre>
</summary>
<div class="nacara-api__body">

Renders the directive, unboxing what `Decode` produced.


</div>
</details>
</div>

## Functions and values

<div class="nacara-api__entry" id="create">
<a class="nacara-api__anchor"
                           href="#create"
                           aria-label="Link to create"
                           data-pagefind-ignore></a>
<details class="nacara-api__member">
<summary>
<pre class="nacara-api__signature nacara-api__signature--hanging"><code><span class="tok-function">create</span><span class="tok-operator">&lt;'</span><span class="tok-parameter">T</span><span class="tok-operator">&gt;</span> <span class="tok-punctuation">(</span><span class="tok-parameter">name</span><span class="tok-punctuation">:</span> <span class="tok-type">string</span><span class="tok-punctuation">)</span> <span class="tok-punctuation">(</span><span class="tok-parameter">decoder</span><span class="tok-punctuation">:</span> <span class="tok-type">Decoder</span><span class="tok-operator">&lt;'</span><span class="tok-parameter">T</span><span class="tok-operator">&gt;)</span> <span class="tok-punctuation">:</span> <a class="tok-type" href="/Partas.Nacara.Plugins/reference/partas-nacara-plugins-directives/nacara-plugins/directivebuilder/">DirectiveBuilder</a><span class="tok-operator">&lt;'</span><span class="tok-parameter">T</span><span class="tok-operator">&gt;</span></code></pre>
</summary>
<div class="nacara-api__body">

Begin declaring a directive: its name and how to read its arguments.

| Parameter | |
|---|---|
| `name` | The word an author writes after `:::`. |
| `decoder` | How the directive's opening-line arguments are read. |


</div>
</details>
</div>

<div class="nacara-api__entry" id="render">
<a class="nacara-api__anchor"
                           href="#render"
                           aria-label="Link to render"
                           data-pagefind-ignore></a>
<details class="nacara-api__member">
<summary>
<pre class="nacara-api__signature nacara-api__signature--hanging"><code><span class="tok-function">render</span><span class="tok-operator">&lt;'</span><span class="tok-parameter">T</span><span class="tok-operator">&gt;</span> <span class="tok-punctuation">(</span><span class="tok-parameter">render</span><span class="tok-punctuation">:</span> <a class="tok-type" href="/Partas.Nacara.Plugins/reference/partas-nacara-plugins-directives/nacara-plugins/directivecontext/">DirectiveContext</a> <span class="tok-operator">-&gt;</span> <span class="tok-punctuation">'</span><span class="tok-parameter">T</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">ReactElement</span> <span class="tok-operator">-&gt;</span> <span class="tok-type">ReactElement</span><span class="tok-punctuation">)</span> <span class="tok-punctuation">(</span><span class="tok-parameter">builder</span><span class="tok-punctuation">:</span> <a class="tok-type" href="/Partas.Nacara.Plugins/reference/partas-nacara-plugins-directives/nacara-plugins/directivebuilder/">DirectiveBuilder</a><span class="tok-operator">&lt;'</span><span class="tok-parameter">T</span><span class="tok-operator">&gt;)</span> <span class="tok-punctuation">:</span> <a class="tok-type" href="/Partas.Nacara.Plugins/reference/partas-nacara-plugins-directives/nacara-plugins/directive/">Directive</a></code></pre>
</summary>
<div class="nacara-api__body">

Finish declaring a directive by saying how to render it.

| Parameter | |
|---|---|
| `render` | Given the context, the decoded arguments, and the already-rendered body, returns the element placed wherever the directive belongs. |
| `builder` | The directive declared by `create`. |


</div>
</details>
</div>

## Properties

<div class="nacara-api__entry" id="name">
<a class="nacara-api__anchor"
                           href="#name"
                           aria-label="Link to Name"
                           data-pagefind-ignore></a>
<details class="nacara-api__member">
<summary>
<pre class="nacara-api__signature nacara-api__signature--hanging"><code><span class="tok-keyword">member</span> <span class="tok-property">Name</span><span class="tok-punctuation">:</span> <span class="tok-type">string</span></code></pre>
</summary>
<div class="nacara-api__body">

The word after `:::` that selects this directive.


</div>
</details>
</div>
