aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2026-05-21 14:52:41 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2026-05-22 15:42:48 -0400
commitfcacae04d8f13baee88528a3e72ed5f791c4c1c6 (patch)
treede65fe4045e026ce4ef30394b218abfb6166d9cd /src
parentdecouple abstraction phase1:1 (diff)
decouple abstraction phase1:2
phase1 step2: move SSP serialiser into sisudoc.abstraction package git mv src/sisudoc/io_out/create_abstraction_txt.d to src/sisudoc/abstraction/ssp.d Module rename: sisudoc.io_out.create_abstraction_txt -> sisudoc.abstraction.ssp Completes phase1: after this commit the sisudoc.abstraction package has zero outgoing edges into sisudoc.io_out. The library produces both the in-memory document object model AND the .ssp text serialisation without referencing any output-side module. The serialiser previously imported sisudoc.io_out.paths_output for the single purpose of constructing the .ssp output path. That import is dropped; the path construction is inlined as three lines of std.path (chainPath / asNormalizedPath / array) producing <output_path>/<language>/abstraction/<doc_uid_out>.ssp - byte-for-byte the same path the previous spineOutPaths!() call produced. Updated: - src/sisudoc/abstraction/ssp.d - module decl + inline path - src/sisudoc/abstraction/package.d - public import .ssp - src/sisudoc/spine.d - import sisudoc.abstraction.ssp (x2) Completes decouple abstraction phase1 (assisted by Claude-Code)
Diffstat (limited to 'src')
-rw-r--r--src/sisudoc/abstraction/package.d1
-rw-r--r--src/sisudoc/abstraction/ssp.d (renamed from src/sisudoc/io_out/create_abstraction_txt.d)12
-rwxr-xr-xsrc/sisudoc/spine.d4
3 files changed, 10 insertions, 7 deletions
diff --git a/src/sisudoc/abstraction/package.d b/src/sisudoc/abstraction/package.d
index 74110f6..645a514 100644
--- a/src/sisudoc/abstraction/package.d
+++ b/src/sisudoc/abstraction/package.d
@@ -83,3 +83,4 @@ module sisudoc.abstraction;
@safe:
public import sisudoc.meta.metadoc; // spineAbstraction (A-layer)
public import sisudoc.meta.metadoc_from_src; // docAbstraction (B-layer)
+public import sisudoc.abstraction.ssp; // spineAbstractionTxt (.ssp)
diff --git a/src/sisudoc/io_out/create_abstraction_txt.d b/src/sisudoc/abstraction/ssp.d
index af98f61..6eecef0 100644
--- a/src/sisudoc/io_out/create_abstraction_txt.d
+++ b/src/sisudoc/abstraction/ssp.d
@@ -47,7 +47,7 @@
[https://git.sisudoc.org/]
+/
-module sisudoc.io_out.create_abstraction_txt;
+module sisudoc.abstraction.ssp;
@safe:
/+ ↓ write document abstraction as human-readable .ssp text file +/
@@ -59,7 +59,6 @@ template spineAbstractionTxt() {
import std.stdio;
import std.string;
import std.array;
- import sisudoc.io_out.paths_output;
void spineAbstractionTxt(D)(D doc) {
auto doc_abstraction = doc.abstraction;
@@ -408,9 +407,12 @@ template spineAbstractionTxt() {
}
/+ ↓ write to file +/
- auto out_pth = spineOutPaths!()(doc_matters.output_path, doc_matters.src.language);
- string base_dir = "abstraction";
- string base_pth = ((out_pth.output_base.chainPath(base_dir)).asNormalizedPath).array;
+ /+ path: <output_path>/<language>/abstraction/<doc_uid_out>.ssp +/
+ string out_root = (doc_matters.output_path.length > 0)
+ ? doc_matters.output_path : "";
+ string base_pth = (out_root
+ .chainPath(doc_matters.src.language, "abstraction")
+ .asNormalizedPath).array;
try {
if (!exists(base_pth)) {
base_pth.mkdirRecurse;
diff --git a/src/sisudoc/spine.d b/src/sisudoc/spine.d
index b00469a..a47c6db 100755
--- a/src/sisudoc/spine.d
+++ b/src/sisudoc/spine.d
@@ -1326,7 +1326,7 @@ string program_name = "spine";
}
/+ ↓ document abstraction text representation +/
if (doc.matters.opt.action.show_abstraction) {
- import sisudoc.io_out.create_abstraction_txt;
+ import sisudoc.abstraction.ssp;
spineAbstractionTxt!()(doc);
}
/+ ↓ document abstraction sqlite database +/
@@ -1435,7 +1435,7 @@ string program_name = "spine";
}
/+ ↓ document abstraction text representation +/
if (doc.matters.opt.action.show_abstraction) {
- import sisudoc.io_out.create_abstraction_txt;
+ import sisudoc.abstraction.ssp;
spineAbstractionTxt!()(doc);
}
/+ ↓ document abstraction sqlite database +/