summaryrefslogtreecommitdiffhomepage
path: root/gleam/manifest.toml
AgeCommit message (Collapse)AuthorFilesLines
2026-10-13release 2.1.0: versions, the library locked, the pipelineHEADmainRalph Amissah1-1/+1
The writer's version follows the format's: 2.1.0 in dub.json, gleam.toml and both flakes (it was 2.0.0), and manifest.toml locks the library at 2.1.0 to match. A release is numbered major.minor.patch, major.minor being the format and shared with the specification and the library, the patch the writer's own. flake.lock, in dlang/ and gleam/, pins the library at its 2.1.0 release and nixpkgs as that release locks it, so the writer builds with what the library was built and checked with. The READMEs say plain nix build, and how to build against a working copy of the library instead. The pipeline no longer builds or runs sisudoc-ssp-reader and sisudoc-ocda-db-reader, which are frozen: ocda-read, the library's reader, covers both, and read.sh already ran it from both forms and in both languages. Gone from build.sh, config.sh, one.sh and read.sh, and from pipeline/README.md, which with config.sh now names spine's --show-abstraction as the README does. build.sh still gives the writer the library beside it, so that the library run and the library built in are the same one. README, to what was decided for these writers: the outputs must be identical from every form and the D and Gleam writers must agree byte for byte, but they are not held to spine's bytes; each format has its own judge, and a difference from spine is there to read better. The introduction said "identical to each other and to spine's", and the example compared --text with spine's text file, which fails by design; the example now compares the .ssp and the .ocda.db. The documents the checks run over are the markup document samples, named with their repository and the spine flags that build the artefacts, and the counts read "all" or "every document" rather than a number, here and in dlang/, gleam/ and pipeline/README.md. The format is 2.1, and the license is stated. Checked: D and Gleam build from the lock; over the markup document samples, D == Gleam in text, markdown, html, epub and typst for every document-language, and the .ssp and the .ocda.db give the same output. (assisted by Claude-Code)
2026-09-27format 2.0: sample writers over the abstraction, in D and in GleamRalph Amissah1-0/+30
Writers over sisudoc-ocda-lib: functions from the document model to bytes, in five formats, one program, ocda-write, in each language. Begun 2026-09-25; this is the writer as it stood at format 2.0. ocda-write --text|--md|--html|--epub|--typst <file> [lang] They are samples. Spine is the output pipeline and nothing here replaces it. What they show is that the abstraction is sufficient: given a .ssp, a .ocda.db or a .sisupod and nothing else, a few hundred lines per format make a complete document. A writer is never told which form it was given, and every writer is run against every form of every document. Each format is held to an oracle that can say no: --text the words equal the html writer's objects, as a multiset; every object number exactly once --md CommonMark; every (#x) resolves to an <a id=x>, no id twice --html it parses; every internal link resolves; the objects' text equals spine's scroll html --epub epubcheck --typst typst itself: a link to a missing label does not compile and in every format the same bytes from every input form, and the D and Gleam writers byte for byte alike. Over the markup document samples every check holds for every document-language. The two languages' writers were not written from each other, and their agreement is the strongest check: twice it caught what nothing else did (an ampersand in an attribute mangled by Erlang's replacement string; typst label names built from bytes in one language and graphemes in the other). Byte identity with spine is not the aim, by decision. The text writer began byte identical to spine --text, and was rewritten: a note is written once, markup comments and dummy headings are not written, an image keeps its caption, a table is padded to display width. The html writer is valid html5 rather than a copy of spine's (h1..h6 where spine writes <h0>; one charset; no placeholder metadata; an id for every anchor tag; self-contained). Each difference is a better presentation, and the code says why at the point of choice. The typst writer puts the object number in the margin as the label every citation points at, a note as a real footnote with a link back, and a table of contents that locates by object number rather than by page, as the markdown writer's does: a page number is a fact about one typesetting, the object number is not. The markdown writer is CommonMark with yaml front matter; a note is at its reference, with the document's own number, and --image-prefix gives the image path, which the model rightly does not know. Holding the writers to these checks found defects in spine, several since fixed there, and spine's typst and markdown writers were ported from these. Use: nix build, in dlang/ or in gleam/. Each flake takes the library from git.sisudoc.org, and flake.lock pins the commit of it these were built and checked against. gleam/ builds with nix-gleam's builder, kept in gleam/nix-gleam/ (MIT); in a working tree, gleam.toml reads the library through the symlink ./ocda-lib. See README.md, dlang/README.md and gleam/README.md, and pipeline/ for building everything and running it over a directory of artefacts. (assisted by Claude-Code)