diagram
5 cases. Source: tests/diagram.json.
#1 canonical
Source
:::figure[How a request reaches a handler]{#fig-flow}
```ascii
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
```
:::
Rendered
Downgrade
```ascii
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
```
*How a request reaches a handler*
#2 a bare fence is an ordinary code block
Source
```ascii
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
```
Rendered
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
Downgrade
```ascii
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
```
#3 an unrecognized diagram language is not a diagnostic
Source
:::figure[The routing graph]
```dot
digraph { a -> b }
```
:::
Rendered
digraph { a -> b }
Downgrade
```dot
digraph { a -> b }
```
*The routing graph*
#4 an uncaptioned figure has nothing to draw with
Source
:::figure
```ascii
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
```
:::
Rendered
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
Downgrade
```ascii
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
```
#5 the language is the first word of the info string
Source
:::figure[Tagged fence]
```ascii linenos=false
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
```
:::
Rendered
Downgrade
```ascii linenos=false
+-------+ +--------+
| Start |---->| Finish |
+-------+ +--------+
```
*Tagged fence*