Expand description
headwater taxonomy graph: the resolved taxonomy as a Mermaid flowchart.
The drawing is a function of the resolved block of the lock and of
nothing else. Every lane, node and edge comes out of that block, so a
release that adds a kind or moves a relation moves the drawing with it, and
no list of kinds, purposes or relations is written down in this file.
HW-DR-0082
is why this is a verb that prints and not a projection that writes.
Mermaid, because the layout belongs to the renderer. GitHub, MkDocs and most Markdown viewers lay out a Mermaid flowchart, so this file carries no layout and no position.
Two views, because one drawing cannot hold both questions. The
concrete view answers which kind can relate to which. The abstract view
answers what an abstract kind gives the kinds under it. Both read
abstract: true and is_a from the lock, and neither names a kind.
The concrete view carries four rules.
- One subgraph for each purpose, holding each concrete kind whose purpose
it is. A kind that names no purpose inherits the purpose of the nearest
kind it is declared
is_a. - One hexagon for each anchor, drawn whether or not a relation reaches it.
- One edge for each
(from, to)pair of each relation, labeled with the relation’s name and styled by its family. - No edge where either end is an abstract kind. An abstract kind stands for every concrete kind declared under it, so an edge to it would read as an edge to a node nobody can write. The abstract view draws those pairs.
The abstract view draws each abstract kind as a dashed node, each kind
declared under one in the lane of its purpose, an is_a arrow from each of
those kinds to the kind it is declared under, and the pairs of relations
that have an abstract kind at one end. An anchor appears only where one of
those pairs reaches it.
A relation from a kind to itself is no edge. Mermaid draws such an edge
as a long detour that two of them turn into a knot. Each view writes it on
the node as one line that starts with ↻, in the color that its
family gives an edge, so the family still reads.
A key is optional. It draws each shape and each edge style the drawing uses, and it names a family from the same list that colors the edges.
The output is sorted throughout and carries no clock and no digest, so two runs over one lock write the same bytes.
Enums§
- View
- Which drawing of the lock to print. A variant carries no doc comment, because
clapprints each one on its own line in a zsh completion script.
Functions§
- render
- Draw the resolved taxonomy of
packageatversion.