Visualize.Audit (Visualize v0.2.35)

Copy Markdown View Source

Cross-references what spec/ declares against what lib/ defines, and renders the result as API_SURFACE.md through Surfex.Golden.

One row per public function on either side. specified means both agree; unspecified is a public function no document declares; unimplemented is a declared function no source defines. The gate (mix vis.surface --check) is HARD on both: drift of the rendered document, and any row that is not specified (spec/12 §2). The second is not implied by the first — the golden is regenerated by the very change that introduces an undeclared function, so the file agrees with itself while the surface has drifted from the specification.

Summary

Functions

The golden as data: what render/1 hands to Surfex.Golden.render/1.

Renders run/1's result to the golden's bytes.

Scans root and joins the two sides.

Types

result()

@type result() :: %{
  rows: [Surfex.Golden.row()],
  specified: non_neg_integer(),
  unspecified: [String.t()],
  unimplemented: [String.t()]
}

Functions

golden_spec(result)

@spec golden_spec(result()) :: Surfex.Golden.spec()

The golden as data: what render/1 hands to Surfex.Golden.render/1.

render(result)

@spec render(result()) :: String.t()

Renders run/1's result to the golden's bytes.

run(root)

@spec run(String.t()) :: result()

Scans root and joins the two sides.