From ca59943ad212cec4c7a2d167468109d95d7a9d74 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Thu, 21 May 2026 14:39:34 -0400 Subject: decouple abstraction phase1:1 phase1 step1: introduce sisudoc.abstraction package re-export surface Create src/sisudoc/abstraction/package.d as a library-facing re-export module for the document-abstraction stage. The surface currently re-exports: - sisudoc.meta.metadoc (spineAbstraction, A-layer entry) - sisudoc.meta.metadoc_from_src (docAbstraction, B-layer entry) No code moves; no behaviour change. The package exists so external consumers can `import sisudoc.abstraction;` and reach the entry points without depending on spine's internal directory layout. (assisted by Claude-Code) --- src/sisudoc/abstraction/package.d | 85 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/sisudoc/abstraction/package.d (limited to 'src') diff --git a/src/sisudoc/abstraction/package.d b/src/sisudoc/abstraction/package.d new file mode 100644 index 0000000..74110f6 --- /dev/null +++ b/src/sisudoc/abstraction/package.d @@ -0,0 +1,85 @@ +/+ +- Name: SisuDoc Spine, Doc Reform [a part of] + - Description: documents, structuring, processing, publishing, search + - static content generator + + - Author: Ralph Amissah + [ralph.amissah@gmail.com] + + - Copyright: (C) 2015 (continuously updated, current 2026) Ralph Amissah, All Rights Reserved. + + - License: AGPL 3 or later: + + Spine (SiSU), a framework for document structuring, publishing and + search + + Copyright (C) Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU AFERO General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see [https://www.gnu.org/licenses/]. + + If you have Internet connection, the latest version of the AGPL should be + available at these locations: + [https://www.fsf.org/licensing/licenses/agpl.html] + [https://www.gnu.org/licenses/agpl.html] + + - Spine (by Doc Reform, related to SiSU) uses standard: + - docReform markup syntax + - standard SiSU markup syntax with modified headers and minor modifications + - docReform object numbering + - standard SiSU object citation numbering & system + + - Homepages: + [https://www.sisudoc.org] + [https://www.doc-reform.org] + + - Git + [https://git.sisudoc.org/] + ++/ +/++ + sisudoc.abstraction - public surface of the document-abstraction + library. + + Pipeline position: markup -> abstraction -> output. + This package is the abstraction stage. The output stage lives in + sisudoc.io_out and consumes the values produced here. + + Entry points: + - spineAbstraction!() (from sisudoc.meta.metadoc) - A-layer: + builds the in-memory document object model from a manifest + (pod path, .sst path). Reads the document body, parses YAML + headers, returns a struct with .abstraction (the object + model) and .matters (the conf/meta/src wrapper). + - docAbstraction!() (from sisudoc.meta.metadoc_from_src) - + B-layer: builds the abstraction from already-loaded body + text plus a pre-built ConfComposite. Pure, no file I/O. + + The A-layer is a thin wrapper over the B-layer; consumers that + want a minimal-dependency entry should use docAbstraction!() + directly. + + Serialisation: + - sisudoc.abstraction.ssp - PEG-parsable text serialisation of + the abstraction (the .ssp format). See specs/doc-abstraction- + format/ for the format reference. + + This file is a re-export-only surface. No logic lives here; it + exists so external consumers can `import sisudoc.abstraction;` and + reach the entry points without depending on spine's directory + layout. ++/ +module sisudoc.abstraction; +@safe: +public import sisudoc.meta.metadoc; // spineAbstraction (A-layer) +public import sisudoc.meta.metadoc_from_src; // docAbstraction (B-layer) -- cgit v1.2.3