YmerNode.Scripts.PackageDocs (Ymer Node v0.2.1)

Copy Markdown View Source

A promised package's own documentation, rendered from this release — what scripts info <name> answers.

The guide stays a map

YmerNode.Script's What a script may call promises one package per job and says nothing about how to call it: the package documents itself, here, at the version this release carries. The node authors the promise, the line and what a row cannot say; the package authors its functions and its examples. A hand-written example would drift from the package at the next line bump, where a rendered Docs chunk cannot — it is compiled from the same source the release runs — and an author touching no format pays nothing, one that does pays one call.

Curation is data

@packages maps each promised name — the hex name the guide's table spells — to its OTP application and the modules an author needs: the entry points, not every module the package compiles. It is the one place a package's rendered set is decided, and a package bumped to a line whose modules moved is a change to this list. YmerNode.Scripts.Guide.render_modules/1 does the rendering, so a package's page reads exactly as the guide does.

Whole or refused

A name outside the list is refused naming every accepted one — the refusal is the documentation for the call it declined. A module without docs refuses the whole answer naming the module and the release setting that keeps the chunk, as the guide does: a partial page would read as the whole package.

Summary

Functions

Every name render/1 accepts, in the curated list's order; the guide's table groups its rows by job.

Renders one promised package: a header naming the package, the version the running release carries and the modules rendered, one line pointing back at the guide's table, then each curated module as the guide renders its own.

Functions

names()

Every name render/1 accepts, in the curated list's order; the guide's table groups its rows by job.

render(name)

Renders one promised package: a header naming the package, the version the running release carries and the modules rendered, one line pointing back at the guide's table, then each curated module as the guide renders its own.

Answers {:ok, markdown}; {:error, {:unknown_package, detail}} for a name outside names/0, the detail naming every accepted one; or the renderer's {:error, {:docs_missing, detail}}, naming the first module whose docs this build does not carry.