aboutsummaryrefslogtreecommitdiffhomepage
path: root/org
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2025-02-19 15:25:45 -0500
committerRalph Amissah <ralph.amissah@gmail.com>2025-02-19 15:25:48 -0500
commit1b311d6f2246d29c3a99da5c40f1558bc83049a9 (patch)
tree96510bdbc971609ba0c11da9f588fb43c2322860 /org
parentdocument (metadata & abstraction) struct (diff)
doc (metadata & abstraction) struct follow throughHEADmain
Diffstat (limited to 'org')
-rw-r--r--org/out_sqlite.org161
-rw-r--r--org/out_xmls.org273
-rw-r--r--org/output_hub.org69
-rw-r--r--org/spine.org4
4 files changed, 235 insertions, 272 deletions
diff --git a/org/out_sqlite.org b/org/out_sqlite.org
index 9610cfc..b9ab903 100644
--- a/org/out_sqlite.org
+++ b/org/out_sqlite.org
@@ -81,11 +81,8 @@ long _metadata_tid_lastrowid;
#+HEADER: :noweb yes
#+BEGIN_SRC d
template SQLiteHubBuildTablesAndPopulate() {
- void SQLiteHubBuildTablesAndPopulate(D,M)(
- const D doc_abstraction,
- M doc_matters,
- ) {
- auto pth_sqlite = spinePathsSQLite!()(doc_matters.sqlite.filename, doc_matters.sqlite.path);
+ void SQLiteHubBuildTablesAndPopulate(D)(D doc) {
+ auto pth_sqlite = spinePathsSQLite!()(doc.matters.sqlite.filename, doc.matters.sqlite.path);
if ((isValidPath(pth_sqlite.base) && exists(pth_sqlite.base) != 0 && pth_sqlite.base.isDir)) {
} else {
try {
@@ -93,20 +90,19 @@ template SQLiteHubBuildTablesAndPopulate() {
} catch (FileException ex) { }
}
template SQLiteDbStatementComposite() {
- void SQLiteDbStatementComposite(Db,D,M)(
- Db db,
- const D doc_abstraction,
- M doc_matters,
+ void SQLiteDbStatementComposite(Db,D)(
+ Db db,
+ D doc
) {
<<sqlite_db_statement_composite_collection>>
- if (doc_matters.opt.action.vox_gt0) {
+ if (doc.matters.opt.action.vox_gt0) {
writeln(" ", pth_sqlite.sqlite_file);
}
}
}
try {
auto db = Database(pth_sqlite.sqlite_file);
- SQLiteDbStatementComposite!()(db, doc_abstraction, doc_matters);
+ SQLiteDbStatementComposite!()(db, doc);
}
catch (FileException e) {
writeln("Failed (FileException): ", e.msg, " ", pth_sqlite.sqlite_file);
@@ -141,24 +137,20 @@ template SQLiteHubBuildTablesAndPopulate() {
#+HEADER: :noweb yes
#+BEGIN_SRC d
template SQLiteHubDiscreteBuildTablesAndPopulate() {
- void SQLiteHubDiscreteBuildTablesAndPopulate(D,M)(
- const D doc_abstraction,
- M doc_matters,
- ) {
- auto url_html = spineUrlsHTML!()(doc_matters.conf_make_meta.conf.w_srv_data_root_url_html, doc_matters.src.language);
- auto pth_sqlite = spinePathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language); // doc_matters.db_path
+ void SQLiteHubDiscreteBuildTablesAndPopulate(D)(D doc) {
+ auto url_html = spineUrlsHTML!()(doc.matters.conf_make_meta.conf.w_srv_data_root_url_html, doc.matters.src.language);
+ auto pth_sqlite = spinePathsSQLiteDiscrete!()(doc.matters.output_path, doc.matters.src.language); // doc.matters.db_path
if ((isValidPath(pth_sqlite.base) && exists(pth_sqlite.base) != 0 && pth_sqlite.base.isDir)) {
} else {
try {
pth_sqlite.base.mkdirRecurse;
} catch (FileException ex) { }
}
- auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename));
+ auto db = Database(pth_sqlite.sqlite_file(doc.matters.src.filename));
template SQLiteDiscreteDbStatementComposite() {
- void SQLiteDiscreteDbStatementComposite(Db,D,M)(
- Db db,
- const D doc_abstraction,
- M doc_matters,
+ void SQLiteDiscreteDbStatementComposite(Db,D)(
+ Db db,
+ D doc
) {
try {
<<sqlite_db_statement_composite_discrete>>
@@ -185,12 +177,12 @@ template SQLiteHubDiscreteBuildTablesAndPopulate() {
import core.runtime;
core.runtime.Runtime.terminate();
}
- if (doc_matters.opt.action.vox_gt0) {
- writeln(" ", pth_sqlite.sqlite_file(doc_matters.src.filename));
+ if (doc.matters.opt.action.vox_gt0) {
+ writeln(" ", pth_sqlite.sqlite_file(doc.matters.src.filename));
}
}
}
- SQLiteDiscreteDbStatementComposite!()(db, doc_abstraction, doc_matters);
+ SQLiteDiscreteDbStatementComposite!()(db, doc);
}
}
#+END_SRC
@@ -245,9 +237,7 @@ template SQLinsertDelimiter() {
}
}
template SQLiteFormatAndLoadObject() {
- auto SQLiteFormatAndLoadObject(M)(
- M doc_matters,
- ) {
+ auto SQLiteFormatAndLoadObject(M)(M doc_matters) {
mixin spineRgxOut;
mixin spineRgxXHTML;
struct sqlite_format_and_load_objects {
@@ -313,9 +303,7 @@ template SQLiteTablesReCreate() {
#+HEADER: :noweb yes
#+BEGIN_SRC d
template SQLiteDeleteDocument() {
- string SQLiteDeleteDocument(M)(
- M doc_matters,
- ) {
+ string SQLiteDeleteDocument(M)(M doc_matters) {
<<sqlite_formatted_delete_format>>
<<sqlite_formatted_delete_sql>>
<<sqlite_formatted_delete_values>>
@@ -330,9 +318,7 @@ template SQLiteDeleteDocument() {
#+HEADER: :noweb yes
#+BEGIN_SRC d
template SQLiteInsertMetadata() {
- string SQLiteInsertMetadata(M)(
- M doc_matters,
- ) {
+ string SQLiteInsertMetadata(M)(M doc_matters) {
<<sqlite_formatted_insertions_doc_matters_metadata_format>>
<<sqlite_formatted_insertions_doc_matters_metadata_sql>>
<<sqlite_formatted_insertions_doc_matters_metadata_sql_values>>
@@ -348,9 +334,7 @@ template SQLiteInsertMetadata() {
#+HEADER: :noweb yes
#+BEGIN_SRC d
template SQLiteInsertMetadataTopics() {
- string SQLiteInsertMetadataTopics(M)(
- M doc_matters,
- ) {
+ string SQLiteInsertMetadataTopics(M)(M doc_matters) {
<<sqlite_formatted_insertions_topic_register_loop>>
<<sqlite_formatted_insertions_topic_register_format>>
<<sqlite_formatted_insertions_topic_register_sql>>
@@ -368,12 +352,9 @@ template SQLiteInsertMetadataTopics() {
#+HEADER: :noweb yes
#+BEGIN_SRC d
template SQLiteInsertDocObjectsLoop() {
- string SQLiteInsertDocObjectsLoop(D,M)(
- const D doc_abstraction,
- M doc_matters,
- ) {
- string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid);
- auto url_html = spineUrlsHTML!()(doc_matters.conf_make_meta.conf.w_srv_data_root_url_html, doc_matters.src.language);
+ string SQLiteInsertDocObjectsLoop(D)(D doc) {
+ string _uid = SQLinsertDelimiter!()(doc.matters.src.doc_uid);
+ auto url_html = spineUrlsHTML!()(doc.matters.conf_make_meta.conf.w_srv_data_root_url_html, doc.matters.src.language);
string insertDocObjectsRow(O)(O obj) {
<<sqlite_formatted_insertions_doc_objects_format>>
<<sqlite_formatted_insertions_doc_objects_sql>>
@@ -525,8 +506,8 @@ template SQLiteDbDrop() {
#+NAME: sqlite_db_statement_composite_collection
#+BEGIN_SRC d
string _db_statement;
-if ((doc_matters.opt.action.sqlite_db_create)) {
- auto pth_sqlite = spinePathsSQLite!()(doc_matters.sqlite.filename, doc_matters.sqlite.path);
+if ((doc.matters.opt.action.sqlite_db_create)) {
+ auto pth_sqlite = spinePathsSQLite!()(doc.matters.sqlite.filename, doc.matters.sqlite.path);
if ((isValidPath(pth_sqlite.base) && exists(pth_sqlite.base) != 0 && pth_sqlite.base.isDir)) {
} else {
try {
@@ -534,27 +515,27 @@ if ((doc_matters.opt.action.sqlite_db_create)) {
} catch (FileException ex) { }
}
_db_statement ~= SQLiteTablesReCreate!()();
- SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "TABLE RE-CREATE");
+ SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "TABLE RE-CREATE");
_db_statement = [];
}
-if (doc_matters.opt.action.sqlite_delete) {
- _db_statement ~= SQLiteDeleteDocument!()(doc_matters);
- SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "DELETE Document");
+if (doc.matters.opt.action.sqlite_delete) {
+ _db_statement ~= SQLiteDeleteDocument!()(doc.matters);
+ SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "DELETE Document");
_db_statement = [];
}
-if (doc_matters.opt.action.sqlite_update) {
- _db_statement ~= SQLiteDeleteDocument!()(doc_matters);
- SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "DELETE Document");
+if (doc.matters.opt.action.sqlite_update) {
+ _db_statement ~= SQLiteDeleteDocument!()(doc.matters);
+ SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "DELETE Document");
_db_statement = [];
- _db_statement ~= SQLiteInsertMetadata!()(doc_matters);
- SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT MetaData");
+ _db_statement ~= SQLiteInsertMetadata!()(doc.matters);
+ SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "INSERT MetaData");
_db_statement = [];
- /+ get tid (lastrowid or max) for use in doc_objects table +/
- _db_statement ~= doc_abstraction.SQLiteInsertDocObjectsLoop!()(doc_matters);
- SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT DocObjects");
+ /+ get tid (lastrowid or max) for use in doc.objects table +/
+ _db_statement ~= doc.SQLiteInsertDocObjectsLoop!();
+ SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "INSERT DocObjects");
_db_statement = [];
- _db_statement ~= SQLiteInsertMetadataTopics!()(doc_matters);
- SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "INSERT MetaDataTopics");
+ _db_statement ~= SQLiteInsertMetadataTopics!()(doc.matters);
+ SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "INSERT MetaDataTopics");
_db_statement = [];
}
db.close;
@@ -567,10 +548,10 @@ db.close;
{
string _db_statement;
_db_statement ~= SQLiteTablesReCreate!()();
- _db_statement ~= SQLiteInsertMetadata!()(doc_matters);
- _db_statement ~= SQLiteInsertMetadataTopics!()(doc_matters);
- _db_statement ~= doc_abstraction.SQLiteInsertDocObjectsLoop!()(doc_matters);
- SQLiteDbRun!()(db, _db_statement, doc_matters.opt.action, "table CREATE Tables, INSERT DocObjects");
+ _db_statement ~= SQLiteInsertMetadata!()(doc.matters);
+ _db_statement ~= SQLiteInsertMetadataTopics!()(doc.matters);
+ _db_statement ~= doc.SQLiteInsertDocObjectsLoop!();
+ SQLiteDbRun!()(db, _db_statement, doc.matters.opt.action, "table CREATE Tables, INSERT DocObjects");
}
db.close;
#+END_SRC
@@ -1534,23 +1515,23 @@ string[string] table(M,O)(
#+NAME: sqlite_objects_loop
#+BEGIN_SRC d
-auto format_and_sqlite_load = SQLiteFormatAndLoadObject!()(doc_matters);
+auto format_and_sqlite_load = SQLiteFormatAndLoadObject!()(doc.matters);
string[string] obj_txt;
string doc_text;
string[] _insert_doc_objects;
-foreach (part; doc_matters.has.keys_seq.sql) {
- foreach (obj; doc_abstraction[part]) {
+foreach (part; doc.matters.has.keys_seq.sql) {
+ foreach (obj; doc.abstraction[part]) {
switch (obj.metainfo.is_of_part) {
case "frontmatter": assert(part == "head", part);
switch (obj.metainfo.is_of_type) {
case "para":
switch (obj.metainfo.is_a) {
case "heading":
- obj_txt = format_and_sqlite_load.heading(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.heading(doc.matters, obj);
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_sqlite) {
+ if (doc.matters.opt.action.debug_do_sqlite) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -1559,7 +1540,7 @@ foreach (part; doc_matters.has.keys_seq.sql) {
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_sqlite) {
+ if (doc.matters.opt.action.debug_do_sqlite) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -1576,14 +1557,14 @@ foreach (part; doc_matters.has.keys_seq.sql) {
writeln(__LINE__, ": ", obj.text);
}
}
- obj_txt = format_and_sqlite_load.heading(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.heading(doc.matters, obj);
break;
case "para":
- obj_txt = format_and_sqlite_load.para(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.para(doc.matters, obj);
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_sqlite) {
+ if (doc.matters.opt.action.debug_do_sqlite) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -1593,28 +1574,28 @@ foreach (part; doc_matters.has.keys_seq.sql) {
case "block":
switch (obj.metainfo.is_a) {
case "quote":
- obj_txt = format_and_sqlite_load.quote(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.quote(doc.matters, obj);
break;
case "group":
- obj_txt = format_and_sqlite_load.group(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.group(doc.matters, obj);
break;
case "block":
- obj_txt = format_and_sqlite_load.block(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.block(doc.matters, obj);
break;
case "poem": // double check on keeping both poem & verse
break;
case "verse":
- obj_txt = format_and_sqlite_load.verse(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.verse(doc.matters, obj);
break;
case "code":
- obj_txt = format_and_sqlite_load.code(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.code(doc.matters, obj);
break;
case "table":
- obj_txt = format_and_sqlite_load.table(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.table(doc.matters, obj);
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_sqlite) {
+ if (doc.matters.opt.action.debug_do_sqlite) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -1623,7 +1604,7 @@ foreach (part; doc_matters.has.keys_seq.sql) {
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_sqlite) {
+ if (doc.matters.opt.action.debug_do_sqlite) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -1636,23 +1617,23 @@ foreach (part; doc_matters.has.keys_seq.sql) {
case "para":
switch (obj.metainfo.is_a) {
case "heading":
- obj_txt = format_and_sqlite_load.heading(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.heading(doc.matters, obj);
break;
case "glossary": assert(part == "glossary", part);
- obj_txt = format_and_sqlite_load.para(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.para(doc.matters, obj);
break;
case "bibliography": assert(part == "bibliography", part);
- obj_txt = format_and_sqlite_load.para(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.para(doc.matters, obj);
break;
case "bookindex": assert(part == "bookindex", part);
- obj_txt = format_and_sqlite_load.para(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.para(doc.matters, obj);
break;
case "blurb": assert(part == "blurb", part);
- obj_txt = format_and_sqlite_load.para(doc_matters, obj);
+ obj_txt = format_and_sqlite_load.para(doc.matters, obj);
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_sqlite) {
+ if (doc.matters.opt.action.debug_do_sqlite) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -1661,7 +1642,7 @@ foreach (part; doc_matters.has.keys_seq.sql) {
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_sqlite) {
+ if (doc.matters.opt.action.debug_do_sqlite) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -1672,7 +1653,7 @@ foreach (part; doc_matters.has.keys_seq.sql) {
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_sqlite) {
+ if (doc.matters.opt.action.debug_do_sqlite) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part); // check where empty value could come from
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
writeln(__FILE__, ":", __LINE__, ": ", obj.text); // check where empty value could come from
@@ -1681,9 +1662,9 @@ foreach (part; doc_matters.has.keys_seq.sql) {
break;
}
if (obj.metainfo.is_a == "heading") {
- if (doc_matters.opt.action.show_sqlite) {
+ if (doc.matters.opt.action.show_sqlite) {
if (obj.metainfo.heading_lev_markup == 0) {
- writeln(doc_matters.src.filename);
+ writeln(doc.matters.src.filename);
}
writeln(
"markup: ", obj.metainfo.heading_lev_markup,
diff --git a/org/out_xmls.org b/org/out_xmls.org
index b3b16d7..8d0b475 100644
--- a/org/out_xmls.org
+++ b/org/out_xmls.org
@@ -1766,10 +1766,7 @@ module sisudoc.io_out.html;
template outputHTML() {
<<output_imports_xml>>
mixin outputXHTMLs;
- void scroll(D,M)(
- const D doc_abstraction,
- M doc_matters,
- ) {
+ void scroll(D)(D doc) {
<<output_html_scroll_0>>
<<output_html_scroll_loop_parts>>
<<output_html_scroll_is_frontmatter>>
@@ -1778,10 +1775,7 @@ template outputHTML() {
<<output_html_scroll_close_is_case>>
}
<<output_html_scroll_scroll_write_output>>
- void seg(D,M)(
- const D doc_abstraction,
- M doc_matters,
- ) {
+ void seg(D)(D doc) {
<<output_html_seg_0>>
<<output_html_seg_loop_parts>>
<<output_html_seg_is_heading>>
@@ -1808,7 +1802,7 @@ auto xhtml_format = outputXHTMLs();
static auto rgx = RgxO();
static auto rgx_xhtml = RgxXHTML();
string[] doc_html;
-string[] doc;
+string[] doc_out;
string suffix = ".html";
string previous_section = "";
string delimit = "";
@@ -1818,8 +1812,8 @@ string delimit = "";
#+NAME: output_html_scroll_loop_parts
#+BEGIN_SRC d
-foreach (section; doc_matters.has.keys_seq.scroll) {
- foreach (obj; doc_abstraction[section]) {
+foreach (section; doc.matters.has.keys_seq.scroll) {
+ foreach (obj; doc.abstraction[section]) {
delimit = xhtml_format.div_delimit(section, previous_section);
string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj);
switch (obj.metainfo.is_of_part) {
@@ -1834,14 +1828,14 @@ case "frontmatter": assert(section == "head" || "toc");
case "para":
switch (obj.metainfo.is_a) {
case "heading":
- doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix);
break;
case "toc":
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -1850,7 +1844,7 @@ case "frontmatter": assert(section == "head" || "toc");
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -1868,14 +1862,14 @@ case "body": assert(section == "body" || "head");
case "para":
switch (obj.metainfo.is_a) {
case "heading":
- doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix);
break;
case "para":
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -1885,28 +1879,28 @@ case "body": assert(section == "body" || "head");
case "block":
switch (obj.metainfo.is_a) {
case "quote":
- doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc_matters);
+ doc_html ~= xhtml_format.quote_scroll(_txt, obj, doc.matters);
break;
case "group":
- doc_html ~= xhtml_format.group_scroll(_txt, obj, doc_matters);
+ doc_html ~= xhtml_format.group_scroll(_txt, obj, doc.matters);
break;
case "block":
- doc_html ~= xhtml_format.block_scroll(_txt, obj, doc_matters);
+ doc_html ~= xhtml_format.block_scroll(_txt, obj, doc.matters);
break;
case "poem":
break;
case "verse":
- doc_html ~= xhtml_format.verse_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= xhtml_format.verse_scroll(_txt, obj, doc.matters, suffix);
break;
case "code":
- doc_html ~= xhtml_format.code(_txt, obj, doc_matters);
+ doc_html ~= xhtml_format.code(_txt, obj, doc.matters);
break;
case "table":
- doc_html ~= xhtml_format.table(_txt, obj, doc_matters);
+ doc_html ~= xhtml_format.table(_txt, obj, doc.matters);
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -1915,7 +1909,7 @@ case "body": assert(section == "body" || "head");
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -1934,29 +1928,29 @@ case "backmatter":
case "para":
switch (obj.metainfo.is_a) {
case "heading":
- doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= delimit ~ xhtml_format.heading_scroll(_txt, obj, doc.matters, suffix);
break;
case "endnote": assert(section == "endnotes");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);
break;
case "glossary": assert(section == "glossary");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);
break;
case "bibliography": assert(section == "bibliography");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);
break;
case "bookindex": assert(section == "bookindex");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);
break;
case "blurb": assert(section == "blurb");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);
break;
case "tail": assert(section == "tail");
- doc_html ~= xhtml_format.para_scroll(_txt, obj, doc_matters, suffix);
+ doc_html ~= xhtml_format.para_scroll(_txt, obj, doc.matters, suffix);
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -1965,7 +1959,7 @@ case "backmatter":
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -1976,7 +1970,7 @@ case "comment":
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part);
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
writeln(__FILE__, ":", __LINE__, ": ", obj.text);
@@ -1992,23 +1986,23 @@ default:
}
}
}
-doc = xhtml_format.html_head(doc_matters, "scroll")
+doc_out = xhtml_format.html_head(doc.matters, "scroll")
~ doc_html
~ xhtml_format.dom_close
-~ xhtml_format.tail(doc_matters);
-scroll_write_output(doc, doc_matters);
+~ xhtml_format.tail(doc.matters);
+scroll_write_output(doc_out, doc.matters);
#+END_SRC
*** write output file
#+NAME: output_html_scroll_scroll_write_output
#+BEGIN_SRC d
-@trusted void scroll_write_output(D,M)(
- D doc,
+@trusted void scroll_write_output(O,M)(
+ O doc_out,
M doc_matters,
) {
debug(asserts) {
- static assert(is(typeof(doc) == string[]));
+ static assert(is(typeof(doc_out) == string[]));
}
auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);
try {
@@ -2017,7 +2011,7 @@ scroll_write_output(doc, doc_matters);
}
{
auto f = File(pth_html.fn_scroll(doc_matters.src.filename), "w");
- foreach (o; doc) {
+ foreach (o; doc_out) {
f.writeln(o);
}
}
@@ -2054,7 +2048,6 @@ static auto rgx_xhtml = RgxXHTML();
auto xhtml_format = outputXHTMLs();
string[][string] doc_html;
string[][string] doc_html_endnotes;
-string[] doc;
string segment_filename;
string[] top_level_headings = ["","","",""];
string previous_seg_filename = "";
@@ -2067,8 +2060,8 @@ string delimit = "";
#+NAME: output_html_seg_loop_parts
#+BEGIN_SRC d
-foreach (section; doc_matters.has.keys_seq.seg) {
- foreach (obj; doc_abstraction[section]) {
+foreach (section; doc.matters.has.keys_seq.seg) {
+ foreach (obj; doc.abstraction[section]) {
delimit = xhtml_format.div_delimit(section, previous_section);
string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj);
#+END_SRC
@@ -2102,33 +2095,33 @@ if (obj.metainfo.is_a == "heading") {
top_level_headings[3] = "";
goto default;
default:
- Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg");
+ Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "seg");
top_level_headings[obj.metainfo.heading_lev_markup] = t[0];
break;
}
break;
case 4:
segment_filename = obj.tags.segment_anchor_tag_epub;
- doc_html[segment_filename] ~= xhtml_format.html_head(doc_matters, "seg");
- auto navigation_bar = xhtml_format.nav_pre_next_svg(obj, doc_matters);
+ doc_html[segment_filename] ~= xhtml_format.html_head(doc.matters, "seg");
+ auto navigation_bar = xhtml_format.nav_pre_next_svg(obj, doc.matters);
doc_html[segment_filename] ~= navigation_bar.toc_pre_next;
previous_seg_filename = segment_filename;
foreach (top_level_heading; top_level_headings) {
doc_html[segment_filename] ~= top_level_heading;
}
- Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg");
+ Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0].to!string;
- doc_html[segment_filename] ~= xhtml_format.lev4_heading_subtoc(obj, doc_matters);
+ doc_html[segment_filename] ~= xhtml_format.lev4_heading_subtoc(obj, doc.matters);
doc_html_endnotes[segment_filename] ~= t[1];
break;
case 5: .. case 7:
- Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "seg");
+ Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0].to!string;
doc_html_endnotes[segment_filename] ~= t[1];
break;
case 8: .. case 9:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup);
writeln(__FILE__, ":", __LINE__, ": ", obj.text);
}
@@ -2136,7 +2129,7 @@ if (obj.metainfo.is_a == "heading") {
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup);
}
}
@@ -2163,12 +2156,12 @@ case "frontmatter": assert(section == "head" || "toc");
case "para":
switch (obj.metainfo.is_a) {
case "toc":
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0].to!string;
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -2177,7 +2170,7 @@ case "frontmatter": assert(section == "head" || "toc");
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -2195,13 +2188,13 @@ case "body": assert(section == "body");
case "para":
switch (obj.metainfo.is_a) {
case "para":
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0].to!string;
doc_html_endnotes[segment_filename] ~= t[1];
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -2211,24 +2204,24 @@ case "body": assert(section == "body");
case "block":
switch (obj.metainfo.is_a) {
case "quote":
- t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.quote_seg(_txt, obj, doc.matters, suffix, "seg");
goto default;
case "group":
- t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.group_seg(_txt, obj, doc.matters, suffix, "seg");
goto default;
case "block":
- t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.block_seg(_txt, obj, doc.matters, suffix, "seg");
goto default;
case "poem":
break;
case "verse":
- t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.verse_seg(_txt, obj, doc.matters, suffix, "seg");
goto default;
case "code":
- doc_html[segment_filename] ~= xhtml_format.code(_txt, obj, doc_matters);
+ doc_html[segment_filename] ~= xhtml_format.code(_txt, obj, doc.matters);
break;
case "table":
- doc_html[segment_filename] ~= xhtml_format.table(_txt, obj, doc_matters);
+ doc_html[segment_filename] ~= xhtml_format.table(_txt, obj, doc.matters);
doc_html_endnotes[segment_filename] ~= "";
break;
default:
@@ -2240,7 +2233,7 @@ case "body": assert(section == "body");
doc_html[segment_filename] ~= t[0].to!string;
doc_html_endnotes[segment_filename] ~= t[1];
} else { /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -2249,7 +2242,7 @@ case "body": assert(section == "body");
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -2268,37 +2261,37 @@ case "backmatter":
case "para":
switch (obj.metainfo.is_a) {
case "endnote": assert(section == "endnotes");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0];
break;
case "glossary": assert(section == "glossary");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0];
doc_html_endnotes[segment_filename] ~= t[1];
break;
case "bibliography": assert(section == "bibliography");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0];
doc_html_endnotes[segment_filename] ~= t[1];
break;
case "bookindex": assert(section == "bookindex");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0];
doc_html_endnotes[segment_filename] ~= t[1];
break;
case "blurb": assert(section == "blurb");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0];
doc_html_endnotes[segment_filename] ~= t[1];
break;
case "tail": assert(section == "tail");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "seg");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "seg");
doc_html[segment_filename] ~= t[0];
doc_html_endnotes[segment_filename] ~= t[1];
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -2307,7 +2300,7 @@ case "backmatter":
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -2318,7 +2311,7 @@ case "comment":
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_html) {
+ if (doc.matters.opt.action.debug_do_html) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part);
}
}
@@ -2333,7 +2326,7 @@ default:
}
}
}
-seg_write_output(doc_html, doc_html_endnotes, doc_matters);
+seg_write_output(doc_html, doc_html_endnotes, doc.matters);
#+END_SRC
*** write output files
@@ -2418,9 +2411,7 @@ void css(M)(M doc_matters) {
#+NAME: copy_html_images
#+BEGIN_SRC d
-@trusted void images_cp(M)( // @system
- M doc_matters,
-) {
+@trusted void images_cp(M)(M doc_matters) { // @system
{ /+ (copy html images) +/
auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);
if (!exists(pth_html.image)) {
@@ -2562,10 +2553,10 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
#+NAME: output_epub3_constructs_oebps_content
#+HEADER: :noweb yes
#+BEGIN_SRC d
-string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {
+string epub3_oebps_content(D,P)(D doc, P parts) {
auto xhtml_format = outputXHTMLs();
- auto pth_epub3 = spinePathsEPUB!()(doc_matters.output_path, doc_matters.src.language);
- string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters!
+ auto pth_epub3 = spinePathsEPUB!()(doc.matters.output_path, doc.matters.src.language);
+ string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc.matters!
string content = format(q"┃<?xml version="1.0" encoding="utf-8"?>
<<epub3_package_version>>
<metadata
@@ -2589,25 +2580,25 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {
<item id="nav" href="toc_nav.xhtml" media-type="application/xhtml+xml" properties="nav" />
┃",
_uuid,
- xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_main),
- (doc_matters.conf_make_meta.meta.title_sub.empty)
- ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.title_sub),
- (doc_matters.conf_make_meta.meta.creator_author.empty)
- ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.creator_author),
- (doc_matters.conf_make_meta.meta.creator_author.empty)
- ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.creator_author),
- doc_matters.src.language, // language, fix (needed in dochead metadata)
- (doc_matters.conf_make_meta.meta.date_published.empty)
- ? "" : xhtml_format.special_characters_date(doc_matters.conf_make_meta.meta.date_published),
- (doc_matters.conf_make_meta.meta.rights_copyright.empty)
- ? "" : xhtml_format.special_characters_text(doc_matters.conf_make_meta.meta.rights_copyright),
+ xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.title_main),
+ (doc.matters.conf_make_meta.meta.title_sub.empty)
+ ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.title_sub),
+ (doc.matters.conf_make_meta.meta.creator_author.empty)
+ ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.creator_author),
+ (doc.matters.conf_make_meta.meta.creator_author.empty)
+ ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.creator_author),
+ doc.matters.src.language, // language, fix (needed in dochead metadata)
+ (doc.matters.conf_make_meta.meta.date_published.empty)
+ ? "" : xhtml_format.special_characters_date(doc.matters.conf_make_meta.meta.date_published),
+ (doc.matters.conf_make_meta.meta.rights_copyright.empty)
+ ? "" : xhtml_format.special_characters_text(doc.matters.conf_make_meta.meta.rights_copyright),
_uuid,
_uuid,
(pth_epub3.fn_oebps_css).chompPrefix("OEBPS/"),
);
content ~= parts["manifest_documents"];
// TODO sort jpg & png
- foreach (image; doc_matters.srcs.image_list) {
+ foreach (image; doc.matters.srcs.image_list) {
content ~= format(q"┃ <item id="%s" href="%s/%s" media-type="image/%s" />
┃",
image.baseName.stripExtension,
@@ -2625,8 +2616,8 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {
content ~= " " ~ "</guide>" ~ "\n ";
content ~= "" ~ "</package>";
debug(epubmanifest) {
- foreach (section; doc_matters.has.keys_seq.seg) { // TODO
- foreach (obj; doc_abstraction[section]) {
+ foreach (section; doc.matters.has.keys_seq.seg) { // TODO
+ foreach (obj; doc.abstraction[section]) {
if (obj.metainfo.is_a == "heading") {
if (obj.metainfo.heading_lev_markup == 4) {
writefln(
@@ -2658,7 +2649,7 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {
#+NAME: output_epub3_constructs_oebps_toc_nav_xhtml
#+BEGIN_SRC d
-string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) {
+string epub3_oebps_toc_nav_xhtml(D)(D doc) {
enum DomTags { none, open, close, close_and_open, open_still, }
auto markup = InlineMarkup();
static auto rgx = RgxO();
@@ -2677,12 +2668,12 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) {
</header>
<nav epub:type="toc" id="toc">
┃",
- (doc_matters.conf_make_meta.meta.title_full).special_characters_text,
+ (doc.matters.conf_make_meta.meta.title_full).special_characters_text,
);
string _toc_nav_tail = "";
- // writeln(doc_matters.has.keys_seq.seg); // DEBUG line
- foreach (sect; doc_matters.has.keys_seq.seg) {
- foreach (obj; doc_abstraction[sect]) {
+ // writeln(doc.matters.has.keys_seq.seg); // DEBUG line
+ foreach (sect; doc.matters.has.keys_seq.seg) {
+ foreach (obj; doc.abstraction[sect]) {
if ((sect == "head") && (obj.metainfo.is_a == "heading")) {
toc = toc_head;
}
@@ -2738,7 +2729,7 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) {
}
break;
}
- if (doc_matters.has.keys_seq.seg[doc_matters.has.keys_seq.seg.length - 2] == sect) {
+ if (doc.matters.has.keys_seq.seg[doc.matters.has.keys_seq.seg.length - 2] == sect) {
// writeln(n, ": ", sect, ": ", _txt, " - ", obj.metainfo.dom_structure_collapsed_tags_status); // DEBUG
// read last heading (heading prior to closing) and determine what those instructions imply still need to be done
// CLOSE // DomTags { 0 none, 1 open, 2 close, 3 close_and_open, 4 open_still, }
@@ -2778,16 +2769,12 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) {
#+NAME: output_epub3_xhtml_seg_output
#+BEGIN_SRC d
-@system void outputEPub3(D,I)(
- const D doc_abstraction,
- I doc_matters,
-) {
+@system void outputEPub3(D)(D doc) {
mixin spineRgxOut;
mixin spineRgxXHTML;
auto xhtml_format = outputXHTMLs();
static auto rgx = RgxO();
static auto rgx_xhtml = RgxXHTML();
- string[] doc;
string segment_filename;
string[] top_level_headings = ["","","",""];
string[string] oepbs_content_parts;
@@ -2810,8 +2797,8 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) {
#+NAME: output_epub3_xhtml_seg_output_loop
#+BEGIN_SRC d
-foreach (section; doc_matters.has.keys_seq.seg) {
- foreach (obj; doc_abstraction[section]) {
+foreach (section; doc.matters.has.keys_seq.seg) {
+ foreach (obj; doc.abstraction[section]) {
string _txt = xhtml_format.special_characters_breaks_indents_bullets(obj);
#+END_SRC
@@ -2845,8 +2832,8 @@ if (obj.metainfo.is_a == "heading") {
goto default;
default:
epubWrite.doc_parts ~= obj.tags.segment_anchor_tag_epub;
- epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= xhtml_format.epub3_seg_head(doc_matters);
- Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub");
+ epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= xhtml_format.epub3_seg_head(doc.matters);
+ Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[obj.tags.segment_anchor_tag_epub] ~= t[0];
epubWrite.doc_epub3_endnotes[obj.tags.segment_anchor_tag_epub] ~= t[1];
break;
@@ -2854,19 +2841,19 @@ if (obj.metainfo.is_a == "heading") {
break;
case 4:
segment_filename = obj.tags.segment_anchor_tag_epub;
- epubWrite.doc_epub3[segment_filename] ~= xhtml_format.epub3_seg_head(doc_matters);
- Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub");
+ epubWrite.doc_epub3[segment_filename] ~= xhtml_format.epub3_seg_head(doc.matters);
+ Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case 5: .. case 7:
- Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc_matters, suffix, "epub");
+ Tuple!(string, string[]) t = xhtml_format.heading_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case 8: .. case 9:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup);
writeln(__FILE__, ":", __LINE__, ": ", obj.text);
}
@@ -2874,7 +2861,7 @@ if (obj.metainfo.is_a == "heading") {
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a, ": ", obj.metainfo.heading_lev_markup);
}
}
@@ -2901,13 +2888,13 @@ case "frontmatter": assert(section == "head" || "toc");
case "para":
switch (obj.metainfo.is_a) {
case "toc":
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -2916,7 +2903,7 @@ case "frontmatter": assert(section == "head" || "toc");
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -2934,13 +2921,13 @@ case "body": assert(section == "body");
case "para":
switch (obj.metainfo.is_a) {
case "para":
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -2950,37 +2937,37 @@ case "body": assert(section == "body");
case "block":
switch (obj.metainfo.is_a) {
case "quote":
- t = xhtml_format.quote_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.quote_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0].to!string;
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "group":
- t = xhtml_format.group_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.group_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0].to!string;
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "block":
- t = xhtml_format.block_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.block_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0].to!string;
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "poem":
break;
case "verse":
- t = xhtml_format.verse_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.verse_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0].to!string;
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "code":
- epubWrite.doc_epub3[segment_filename] ~= xhtml_format.code(_txt, obj, doc_matters);
+ epubWrite.doc_epub3[segment_filename] ~= xhtml_format.code(_txt, obj, doc.matters);
break;
case "table":
- epubWrite.doc_epub3[segment_filename] ~= xhtml_format.table(_txt, obj, doc_matters);
+ epubWrite.doc_epub3[segment_filename] ~= xhtml_format.table(_txt, obj, doc.matters);
epubWrite.doc_epub3_endnotes[segment_filename] ~= "";
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -2989,7 +2976,7 @@ case "body": assert(section == "body");
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -3008,37 +2995,37 @@ case "backmatter":
case "para":
switch (obj.metainfo.is_a) {
case "endnote": assert(section == "endnotes");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
break;
case "glossary": assert(section == "glossary");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "bibliography": assert(section == "bibliography");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "bookindex": assert(section == "bookindex");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "blurb": assert(section == "blurb");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
case "tail": assert(section == "tail");
- t = xhtml_format.para_seg(_txt, obj, doc_matters, suffix, "epub");
+ t = xhtml_format.para_seg(_txt, obj, doc.matters, suffix, "epub");
epubWrite.doc_epub3[segment_filename] ~= t[0];
epubWrite.doc_epub3_endnotes[segment_filename] ~= t[1];
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
}
}
@@ -3047,7 +3034,7 @@ case "backmatter":
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_type);
}
}
@@ -3064,7 +3051,7 @@ case "backmatter":
break;
default:
{ /+ debug +/
- if (doc_matters.opt.action.debug_do_epub) {
+ if (doc.matters.opt.action.debug_do_epub) {
writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part);
}
}
@@ -3133,9 +3120,9 @@ if (obj.metainfo.is_a == "heading") {
/+ epub specific documents +/
epubWrite.mimetypes = epub3_mimetypes;
epubWrite.meta_inf_container_xml = epub3_container_xml;
- epubWrite.oebps_toc_nav_xhtml = doc_abstraction.epub3_oebps_toc_nav_xhtml(doc_matters);
- epubWrite.oebps_content_opf = doc_abstraction.epub3_oebps_content(doc_matters, oepbs_content_parts);
- epubWrite.epub3_write_output_files(doc_matters);
+ epubWrite.oebps_toc_nav_xhtml = doc.epub3_oebps_toc_nav_xhtml;
+ epubWrite.oebps_content_opf = doc.epub3_oebps_content(oepbs_content_parts);
+ epubWrite.epub3_write_output_files(doc.matters);
}
#+END_SRC
diff --git a/org/output_hub.org b/org/output_hub.org
index fb9453a..c87c757 100644
--- a/org/output_hub.org
+++ b/org/output_hub.org
@@ -32,15 +32,12 @@ module sisudoc.io_out.hub;
@safe:
template outputHub() {
<<output_imports>>
- @system void outputHub(D,I)(
- const D doc_abstraction,
- I doc_matters
- ) {
+ @system void outputHub(D)(D doc) {
mixin Msg;
- auto msg = Msg!()(doc_matters);
+ auto msg = Msg!()(doc.matters);
enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff }
- void Scheduled(D,I)(int sched, D doc_abstraction, I doc_matters) {
- auto msg = Msg!()(doc_matters);
+ void Scheduled(D)(int sched, D doc) {
+ auto msg = Msg!()(doc.matters);
<<output_scheduled_task_source_or_pod>>
<<output_scheduled_task_epub>>
<<output_scheduled_task_html_meta>>
@@ -51,15 +48,15 @@ template outputHub() {
<<output_scheduled_task_odt>>
<<output_scheduled_task_sqlite>>
}
- if (doc_matters.opt.action.vox_gt0) { writeln(doc_matters.src.filename_base); }
- if (!(doc_matters.opt.action.parallelise_subprocesses)) {
- foreach(schedule; doc_matters.opt.action.output_task_scheduler) {
- Scheduled!()(schedule, doc_abstraction, doc_matters);
+ if (doc.matters.opt.action.vox_gt0) { writeln(doc.matters.src.filename_base); }
+ if (!(doc.matters.opt.action.parallelise_subprocesses)) {
+ foreach(schedule; doc.matters.opt.action.output_task_scheduler) {
+ Scheduled!()(schedule, doc);
}
} else {
import std.parallelism;
- foreach(schedule; parallel(doc_matters.opt.action.output_task_scheduler)) {
- Scheduled!()(schedule, doc_abstraction, doc_matters);
+ foreach(schedule; parallel(doc.matters.opt.action.output_task_scheduler)) {
+ Scheduled!()(schedule, doc);
}
}
<<output_shared_sqlite_db>>
@@ -134,11 +131,11 @@ import sisudoc.io_out,
#+BEGIN_SRC d
if (sched == outTask.source_or_pod) {
msg.v("spine (doc reform) source processing... ");
- if (doc_matters.opt.action.pod) { msg.v("spine (doc reform) source pod processing... "); }
+ if (doc.matters.opt.action.pod) { msg.v("spine (doc reform) source pod processing... "); }
import sisudoc.io_out.source_pod;
- spinePod!()(doc_matters);
- if (doc_matters.opt.action.source) { msg.vv("spine (doc reform) source done"); }
- if (doc_matters.opt.action.pod) { msg.vv("spine (doc reform) source pod done"); }
+ spinePod!()(doc.matters);
+ if (doc.matters.opt.action.source) { msg.vv("spine (doc reform) source done"); }
+ if (doc.matters.opt.action.pod) { msg.vv("spine (doc reform) source pod done"); }
}
#+END_SRC
@@ -149,7 +146,7 @@ if (sched == outTask.source_or_pod) {
if (sched == outTask.epub) {
msg.v("epub3 processing... ");
import sisudoc.io_out.epub3;
- doc_abstraction.outputEPub3!()(doc_matters);
+ doc.outputEPub3!();
msg.vv("epub3 done");
}
#+END_SRC
@@ -160,7 +157,7 @@ if (sched == outTask.epub) {
#+NAME: output_scheduled_task_html_meta
#+BEGIN_SRC d
if (sched == outTask.html_stuff) {
- outputMetadata!()(doc_matters);
+ outputMetadata!()(doc.matters);
msg.vv("html metadata done");
}
#+END_SRC
@@ -172,7 +169,7 @@ if (sched == outTask.html_stuff) {
if (sched == outTask.html_scroll) {
msg.v("html scroll processing... ");
import sisudoc.io_out.html;
- outputHTML!().scroll(doc_abstraction, doc_matters);
+ outputHTML!().scroll(doc);
msg.vv("html scroll done");
}
#+END_SRC
@@ -184,7 +181,7 @@ if (sched == outTask.html_scroll) {
if (sched == outTask.html_seg) {
msg.v("html seg processing... ");
import sisudoc.io_out.html;
- outputHTML!().seg(doc_abstraction, doc_matters);
+ outputHTML!().seg(doc);
msg.vv("html seg done");
}
#+END_SRC
@@ -195,8 +192,8 @@ if (sched == outTask.html_seg) {
#+BEGIN_SRC d
if (sched == outTask.html_stuff) {
import sisudoc.io_out.html;
- outputHTML!().css(doc_matters);
- outputHTML!().images_cp(doc_matters);
+ outputHTML!().css(doc.matters);
+ outputHTML!().images_cp(doc.matters);
msg.vv("html css & images done");
}
#+END_SRC
@@ -218,17 +215,17 @@ if (sched == outTask.latex) {
msg.v("latex processing... (available for downstream processing & pdf output");
import sisudoc.io_out.latex;
import std.file;
- if ((isValidPath(doc_matters.output_path ~ "/latex/sty"))
- && (!(exists(doc_matters.output_path ~ "/latex/sty")))
+ if ((isValidPath(doc.matters.output_path ~ "/latex/sty"))
+ && (!(exists(doc.matters.output_path ~ "/latex/sty")))
) {
outputLaTeXstyInit!()(
- doc_matters.output_path,
- doc_matters.opt.action.generated_by,
- doc_matters.generator_program.name_version_and_compiler,
- doc_matters.generator_program.time_output_generated,
+ doc.matters.output_path,
+ doc.matters.opt.action.generated_by,
+ doc.matters.generator_program.name_version_and_compiler,
+ doc.matters.generator_program.time_output_generated,
);
}
- outputLaTeX!()(doc_abstraction, doc_matters);
+ outputLaTeX!()(doc.abstraction, doc.matters);
msg.vv("latex done");
}
#+END_SRC
@@ -240,7 +237,7 @@ if (sched == outTask.latex) {
if (sched == outTask.odt) {
msg.v("odf:odt processing... ");
import sisudoc.io_out.odt;
- outputODT!()(doc_abstraction, doc_matters);
+ outputODT!()(doc.abstraction, doc.matters);
msg.vv("odf:odt done");
}
#+END_SRC
@@ -252,7 +249,7 @@ if (sched == outTask.odt) {
if (sched == outTask.sqlite) {
msg.v("sqlite processing... ");
import sisudoc.io_out.sqlite;
- doc_abstraction.SQLiteHubDiscreteBuildTablesAndPopulate!()(doc_matters);
+ doc.SQLiteHubDiscreteBuildTablesAndPopulate!();
msg.vv("sqlite done");
}
#+END_SRC
@@ -263,15 +260,15 @@ if (sched == outTask.sqlite) {
#+NAME: output_shared_sqlite_db
#+BEGIN_SRC d
-if (doc_matters.opt.action.sqlite_update) {
+if (doc.matters.opt.action.sqlite_update) {
msg.v("sqlite update processing...");
import sisudoc.io_out.sqlite;
- doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters);
+ doc.SQLiteHubBuildTablesAndPopulate!();
msg.vv("sqlite update done");
-} else if (doc_matters.opt.action.sqlite_delete) {
+} else if (doc.matters.opt.action.sqlite_delete) {
msg.v("sqlite delete processing...");
import sisudoc.io_out.sqlite;
- doc_abstraction.SQLiteHubBuildTablesAndPopulate!()(doc_matters);
+ doc.SQLiteHubBuildTablesAndPopulate!();
msg.vv("sqlite delete done");
}
#+END_SRC
diff --git a/org/spine.org b/org/spine.org
index f6e7faa..51c649c 100644
--- a/org/spine.org
+++ b/org/spine.org
@@ -1293,8 +1293,6 @@ if ((_opt_action.debug_do)
writeln("--->\nstepX commence → (document abstraction) [", manifest.src.filename, "]");
}
auto doc = spineAbstraction!()(_env, program_info, _opt_action, _cfg, manifest, _make_and_meta_struct);
-auto doc_abstraction = doc.abstraction;
-auto doc_matters = doc.matters;
if ((doc.matters.opt.action.debug_do)
|| (_opt_action.debug_do_stages)
) {
@@ -1416,7 +1414,7 @@ if (!(doc.matters.opt.action.skip_output)) {
if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) {
writeln("step5 commence → (process outputs) [", manifest.src.filename, "]");
}
- doc.abstraction.outputHub!()(doc.matters);
+ doc.outputHub!();
if ((_opt_action.debug_do) || (_opt_action.debug_do_stages)) {
writeln("- step5 complete for [", manifest.src.filename, "]");
}