summaryrefslogtreecommitdiffhomepage
path: root/dlang/src/write/text.d
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2026-09-29 17:56:11 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2026-09-29 17:56:11 -0400
commitcc0b844be3822ac45603a095ceee77dc0f231288 (patch)
tree43ff1a1ad062ae791412f0f792f925da06d2adae /dlang/src/write/text.d
parentformat 2.0: sample writers over the abstraction, in D and in Gleam (diff)
format 2.1: the poem, and a note mark of a symbol and a number
From format 2.1 a poem comes before its verses, carries object number 0 and states the range of its verses, where it came after them sharing the last verse's number. The text writer's rule, an object with no text writes nothing, covers both forms and is unchanged; its comment, in both languages, and the README now describe the poem as it is. Spine now writes the markup's editor's notes, ~[* ]~ and ~[+ ]~, as their own numbered series, marked *1, *2 ... and +1, +2 ..., in the form the special notes already had. The note patterns took symbols alone, so in every writer, both languages, these went through as text. They now take [*+]+[0-9]* where they took symbols. Over the markup document samples written by spine at 2.1: D == Gleam byte for byte in all five formats; the same .typ from .ssp and .ocda.db; spine's .typ body == this writer's; epubcheck clean; every html link resolves. Against the same writers over 2.0 artefacts, two things move, both the abstraction's doing: the_public_domain's html and epub gain note 84, which 2.0 never gathered; and seven epubs lose an empty body.xhtml page listed in the navigation, which was where the 2.0 poems went for want of a segment. The repository is sisudoc-ocda-writer, in the singular: named for its role, as its siblings are. It holds one writer, ocda-write, in each language, taking the format as an option. flake.lock, in dlang/ and gleam/, now pins the library at its model 2.1 commit. (assisted by Claude-Code)
Diffstat (limited to 'dlang/src/write/text.d')
-rw-r--r--dlang/src/write/text.d8
1 files changed, 5 insertions, 3 deletions
diff --git a/dlang/src/write/text.d b/dlang/src/write/text.d
index 9853a7e..0ce53f8 100644
--- a/dlang/src/write/text.d
+++ b/dlang/src/write/text.d
@@ -128,9 +128,11 @@ string[] textSections(ref OcdaDocument doc) {
+/
private string objectOut(ref const OcdaObject obj) {
/+ ↓ an object with no text of its own writes nothing. A poem is such an
- object: it is a container that closes a run of verses and carries the
- *same* object number as the last of them, so writing it would put that
- number in the file twice - 15 times over in one sample. +/
+ object: a container of the verses that follow it, which are what is
+ written. Since format 2.1 it carries object number 0 and states the
+ range of its verses; before, it closed the run carrying the *same*
+ number as the last verse, and writing it put that number in the file
+ twice - 15 times over in one sample. Both forms write nothing. +/
if (obj.text.strip.length == 0) { return ""; }
/+ ↓ and a dummy heading writes nothing: it is generated furniture whose
text repeats the heading above it, and every other writer here drops