Skip to main content

Module taxonomy_graph

Module taxonomy_graph 

Source
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 clap prints each one on its own line in a zsh completion script.

Functions§

render
Draw the resolved taxonomy of package at version.