diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2026-05-21 14:52:41 -0400 |
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2026-05-22 15:42:48 -0400 |
| commit | fcacae04d8f13baee88528a3e72ed5f791c4c1c6 (patch) | |
| tree | de65fe4045e026ce4ef30394b218abfb6166d9cd /src | |
| parent | decouple 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.d | 1 | ||||
| -rw-r--r-- | src/sisudoc/abstraction/ssp.d (renamed from src/sisudoc/io_out/create_abstraction_txt.d) | 12 | ||||
| -rwxr-xr-x | src/sisudoc/spine.d | 4 |
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 +/ |
