aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/default_regex.org
Commit message (Collapse)AuthorAgeFilesLines
* markdown output, --markdown (--md)Ralph Amissah2026-09-281-0/+5
| | | | | | | | | | | | | | | | | | | | | A plain-text output that keeps the object numbers, written as CommonMark with GFM pipe tables, one .md per document-language in <lang>/markdown/, (linked from the metadata page) with images into that shared directory itself, skipping any already there, so --markdown alone still gives a complete tree. provided as an alternative to --text rather than a replacement --markdown produces a document that renders, (both provide objext numbering survives both. Every object carries an anchor and a superscript number linking to itself, so a citation by object number is a link in any markdown renderer. --text may still be of value to read in a terminal A note is written where it is referenced, with a link back to the object it came from, rather than gathered into an endnotes section. (assisted by Claude-Code)
* typst output --typist & --pdf that makes the pdfRalph Amissah2026-09-281-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | typst provides a new pdf build path replacing latex as the primary pdf builder. --typst (--typ) writes the .typ; --pdf writes the .typ and compiles it by spawning `typst compile`. (--pdf is redefined, being typst to pdf rather than latex). --latex is unchanged and writes the .tex; One .typ per document-language (not one per paper size). The paper and the orientation are read from sys.inputs with a default, so the same file compiles to every paper --set-papersize asks for, the pdfs keep their original names. Spine's paper names (derived from what suited latex) and typst's are different vocabularies and are mapped; a paper typst does not have is named and skipped. With the flag --pdf spine invokes a typesetter to generate the pdf output directly, which is new (the latex path writes a .tex and leaves xelatex to the caller). If typst is not available on the machine it is reported absent, naming the binary and printing the command, and the run continues, the .typ is written. Several useful features of an object-centric pdf are easily met, usually being a few lines each. - The object number goes in the margin as one `place` at a coordinate inside the object's own block, carrying the label every citation points at. - A note is a real footnote at the point of reference, with the document's own number and one link back to the object. - The table of contents locates by object number rather than by page, so it holds true across every paper and every setting. That typst compiles silently across the sample set means every internal link in every document resolves (--pdf over the collection with two paper sizes gives 144 pdfs, none skipped and none failed, each the page size its name claims and each tagged). paths: .typ, pdf named in same way as .tex based built pdfs so site linkage works either way flake.nix: added a typst dev shell, for .typ pdf typesetter - dsh-typst-pdf providing a pdf typsetter for spine's .typ. - dsh-latex-pdf provides xelatex for .tex which can still be written. (assisted by Claude-Code)
* uid and paths separator "~" in place of ":"Ralph Amissah2026-09-231-10/+10
| | | | | | | | | | | | | | | | | | | need a character to split filenames on in certain circumstances. there problems with use of a colon in filenames, which is legal on posix but not on Windows."~" fits the bill better being legal on every filesystem of interest and is unreserved in rfc 3986, needing no escaping in a url. The reference abstraction is renamed, its content unchanged. Over the sample collection two filenames move and nothing else does: the abstraction and database digests are identical, the archive's members and their sizes are unchanged, and only the member order shifts, "~" collating after letters where ":" sorted before them. The document's epub dc:identifier is a v5 uuid derived from the uid, so it changes for those filenames. Every document's uid changes in the search database (spine.search.db). (assisted by Claude-Code)
* pod: read when zstd-wrappedRalph Amissah2026-09-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sisupod using zstd compression recognised by first bytes. <doc>.sisupod: spine reads one before it writes one, so when the name changes (from .zip to .ssiupod) every pod already published stays readable. A .sisupod is one zstd frame wrapping the archive spine already builds. The reader unwraps the bytes and hands the same archive to the same parser, so every guard downstream is untouched: entry names, per-entry and total size, path depth, escape and symlinks. Which container it is comes from the first four bytes (rather than the name). A pod published as a plain .zip reads as it always did, a .sisupod reads, and either one renamed reads too. The suffix is still recognised, both spellings, for the argument and for a url. libzstd is declared rather than bound: provides the whole surface of fifteen extern C prototypes (there is nothing to generate and no upstream tree to track, which is the arrangement sqlite3 already has). dub links it with "libs": [ "zstd" ]; nix needs zstd.out rather than zstd, whose default output is the binaries and carries no library at all. A frame declares its uncompressed size in its own header, and for a pod fetched over https that number is attacker controlled. The declared size is checked against a ceiling before a buffer is asked for, a frame that will not declare one is refused, and what comes out is checked against what was promised. The ceiling is the extraction limit the archive reader already applies, so the two bounds agree. Measured: output built from a .sisupod is byte identical to output built from the same pod's .zip, 359 files over text, html, epub, odt and .ssp for three documents, live-manual's ten languages included. A truncated frame is refused and the document skipped. free_culture 2863504 -> 1099736 2.60x the_wealth_of_networks 4294022 -> 1172649 3.66x live-manual 6972418 -> 675970 10.31x (assisted by Claude-Code)
* images alt text, and epub says what it isRalph Amissah2026-09-141-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Four things, not visible in an error count: - Images had no alt text, even where markup carried the text, and the field alt text is present, incorrectly used in code; fixed as the alt. { sm_tux.png 64x80 "Gnu/Linux - a better way" }image an image with nothing to say for itself gets alt="" - Images with no dimensions were incorrectly written width="0" height="0", fixed - Accessibility metadata, which EPUB Accessibility 1.1 requires: schema:accessMode, accessibilityFeature and accessibilityHazard, plus accessModeSufficient and accessibilitySummary, which epubcheck does not test for; used by - readers looking for a book it can use, - anyone distributing into the EU. Every value is derived from the document, not asserted: a document with no images says so, one whose images all carry alt text claims alternativeText and textual sufficiency, one where an image says nothing claims neither. Nothing claims WCAG conformance, which would be a claim about an evaluation that has not happened. - DPUB-ARIA roles beside the structure spine already knew about. doc-toc, doc-endnotes, doc-bibliography, doc-glossary and doc-index on the sections, doc-noteref on a note reference and doc-footnote on the note it points at. "doc_endnotes" as a class name means something to a stylesheet and nothing to a reading system. Not doc-biblioentry: DPUB- ARIA 1.1 deprecated it. These are plain ARIA, so the html gets them too. Also dealt with here: - Spine makes certain sections such as endnotes, bookindex, ... and a heading that has a name for itself cannot share the same name, if it does the name is now disambiguated, disambiguated. (disambiguation similar to that used for a repeated anchor tag) - Endnote anchors fixed to use "id" (being one unique tag in the document that is target of every reference to it)instead of obsolete form (they were <a name="note_1">. "name" on an <a>). Book index markers keep "name": the same marker sits on every object an entry names, 296 times in one document, and those are markers of where a term occurs rather than distinct targets. (assisted by Claude-Code)
* regex: confine url within an endnote (delimiter)Ralph Amissah2026-09-141-4/+4
| | | | | | | in error regex permitted a url to go past an endnote close delimiter, fixed (assisted by Claude-Code)
* ocda: get image from is internal image markupRalph Amissah2026-09-121-1/+3
| | | | | | | | | | correct circumstance where regex was incorrectly able to match image shaped words as well as identified and marked up image (internal markup). take all matches. (assisted by Claude-Code)
* ocda + outputs split: module/import + dub.json fixupsRalph Amissah2026-05-251-12/+12
| | | | | | | | | | | Modules and imports rewritten to sisudoc.ocda.* and sisudoc.outputs.*; dub.json excludedSourceFiles and the spine:abstraction sub-package sourcePaths collapsed to ./src/sisudoc/ocda. Verified: nix build .#spine-overlay-ldc clean. (assisted by Claude-Code)
* org files cosmetic, remove word BUGRalph Amissah2026-05-051-1/+1
|
* org headers rearranged (& odd hilighting issue)Ralph Amissah2026-05-041-5/+5
| | | | | - odd hilighting issue ... must result from my org config, but "fix" makes things easier for me.
* org-mode header, minor (set: results silent)Ralph Amissah2026-01-101-1/+1
|
* 2026Ralph Amissah2026-01-091-1/+1
|
* text output, improve various (including no-ocn)Ralph Amissah2025-10-141-0/+1
| | | | - revisit links (fix later)
* abstraction metainfo, provide endnote parent ocnRalph Amissah2025-10-131-4/+2
| | | | | | - preferable, endnote parent object number available for use (as here in text output, compare "endnotes, add caller ocn" commit)
* text output, endnotes, add caller ocn (& some cleaning)Ralph Amissah2025-10-081-12/+12
|
* a text output (and skel an outline)Ralph Amissah2025-10-031-16/+18
| | | | - spine --text [--output=output path] [markup source]
* (editor emacs org-mode includes)Ralph Amissah2025-09-261-1/+18
|
* org, property header-args results output noneRalph Amissah2025-09-141-1/+1
|
* sisudoc-spine upkeep, minor, a file renamedRalph Amissah2025-03-221-1/+1
|
* triple single-quote marks block identifier addedRalph Amissah2025-02-211-2/+21
| | | | | | | | - tics a bit cumbersome where single quotes work just as well - testing required (special cases not covered) - diverges from sisu markup which will need an update sometime
* 2025Ralph Amissah2025-01-011-1/+1
|
* 0.16.0 sisudoc (src/sisudoc sisudoc spine)sisudoc-spine_v0.16.0-devRalph Amissah2024-04-101-14/+14
| | | | | - src/sisudoc (replaces src/doc_reform) - sisudoc spine (used more)
* mark modules as @safe: (& identify what is not)Ralph Amissah2024-03-121-0/+6
|
* 2024Ralph Amissah2024-01-021-1/+1
|
* org, spine ver & doc header (copyright & license)Ralph Amissah2023-12-171-50/+3
| | | | | | - org import: reuse settings in another org file using code block to evaluate other org file spine_version_info_and_doc_header_including_copyright_and_license.org
* 2023, year rollover, old habitRalph Amissah2023-01-011-3/+2
|
* regex review, match speed & compile time, ctregexRalph Amissah2022-12-231-58/+140
| | | | | | | | | - improve match time - add interim fontface identifier marker - improve compile time - remove unused regexs - separate out some specialized output matches
* regex (start thinking about ctRegex)Ralph Amissah2022-11-211-258/+288
|
* org noweb adjustmentsRalph Amissah2022-09-281-1/+3
|
* org-mode headers modifiedRalph Amissah2022-06-151-3/+2
|
* housekeepingRalph Amissah2022-05-271-3/+8
|
* latex head adjustmentsRalph Amissah2022-04-031-0/+12
|
* latex output (try tidy); linebreaks more generallyRalph Amissah2022-04-031-2/+6
|
* latex, pagebreaks, make headersRalph Amissah2022-03-071-0/+10
| | | | | - for book, article and manually set pagebreaks, not fully utilized but flexibility introduced
* epub, work onRalph Amissah2022-02-051-1/+2
|
* doc presentation, add option to include date with title and authorRalph Amissah2022-01-251-0/+3
|
* xmls, html group text output (bullets & indents)Ralph Amissah2022-01-211-4/+40
|
* org files naming, minorRalph Amissah2022-01-211-77/+77
|
* a new yearRalph Amissah2022-01-051-2/+2
|
* primarily org relatedRalph Amissah2021-11-271-1/+1
|
* org-mode code block headersRalph Amissah2021-06-281-2/+5
|
* regex adjust, dc update build fix requiredRalph Amissah2021-05-031-5/+5
| | | | - ldc-v1.26.0 dmd-v2.096.1
* org-mode, cosmeticRalph Amissah2021-04-191-24/+24
|
* headers: copyright, license, year; also httpsRalph Amissah2021-04-081-3/+61
|
* org mode, unique code-block names & adjust headersRalph Amissah2020-10-191-38/+78
| | | | | - avoid org-mode undefined behavior, provide unique code-block names
* doc abstraction, code & org whitespace, cosmeticRalph Amissah2020-05-201-24/+24
|
* metaverse, doc structure & blocks, change trackingRalph Amissah2020-05-201-3/+3
|
* backmatter, special sections, multiple fixesRalph Amissah2020-05-201-6/+4
| | | | | | | | - fix special sections eat other special sections, e.g. glossary eats bibliography & other headings - glossary stop object numbering on empty lines - glossary remove indent markup instruction - bibliography provide missing heading
* metaverse, set behavior of block & group textRalph Amissah2020-05-201-1/+1
| | | | | - group: loses spaces, retains double newlines - block: retains spaces and newlines
* uid, select separator that works better with sqliteRalph Amissah2020-05-201-0/+1
|