Every citation of a specification section names a heading that exists (spec/12 §3, #648).
A citation is spec/NN §id, its long form spec/NN-slug.md §id, or a specification
document's link form [NN-slug](NN-slug.md) §id. A list or a range continues it —
spec/08 §1.9, §7.3, spec/09 §4.3.8–4.3.9 — and every id in it is of that one document.
An id is a heading's decimal number, and in spec/13 its D-N as well. A heading inside a
code fence is an example and resolves nothing.
A renumbered chapter leaves its citations pointing at headings that moved, and nothing
else notices: spec/06 §9.4 named the force simulation's timer discipline for as long as
§8.5 held it.
Summary
Functions
The unresolved citations in one file's text, as file:line: … strings, against the ids of
each document by its two-digit number. A file that is not text has none.
The section ids a specification document's headings give, outside code fences.
Problems across root's spec, lib, test and specs trees; [] when every citation resolves.
Functions
@spec check(String.t(), String.t(), %{required(String.t()) => MapSet.t(String.t())}) :: [String.t()]
The unresolved citations in one file's text, as file:line: … strings, against the ids of
each document by its two-digit number. A file that is not text has none.
The section ids a specification document's headings give, outside code fences.
iex> Visualize.Audit.Citations.ids("## 1. One\n### 1.1 Sub\n```\n## 9. Example\n```\n")
MapSet.new(["1", "1.1"])
Problems across root's spec, lib, test and specs trees; [] when every citation resolves.