aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/doc_reform
diff options
context:
space:
mode:
Diffstat (limited to 'src/doc_reform')
-rw-r--r--src/doc_reform/output/epub3.d20
-rw-r--r--src/doc_reform/output/paths_output.d192
-rw-r--r--src/doc_reform/output/sqlite.d239
3 files changed, 237 insertions, 214 deletions
diff --git a/src/doc_reform/output/epub3.d b/src/doc_reform/output/epub3.d
index cdfd2a6..09dea3d 100644
--- a/src/doc_reform/output/epub3.d
+++ b/src/doc_reform/output/epub3.d
@@ -79,7 +79,7 @@ template outputEPub3() {
_uuid,
_uuid,
_uuid,
- (pth_epub3.fn_oebps_css(doc_matters.src.filename)).chompPrefix("OEBPS/"),
+ (pth_epub3.fn_oebps_css).chompPrefix("OEBPS/"),
);
content ~= " " ~ "<!-- Content Documents -->" ~ "\n ";
content ~= parts["manifest_documents"];
@@ -89,7 +89,7 @@ template outputEPub3() {
content ~= format(q"┃ <item id="%s" href="%s/%s" media-type="image/%s" />
┃",
image.baseName.stripExtension,
- (pth_epub3.doc_oebps_image(doc_matters.src.filename)).chompPrefix("OEBPS/"),
+ (pth_epub3.doc_oebps_image).chompPrefix("OEBPS/"),
image,
image.extension.chompPrefix("."),
);
@@ -659,7 +659,7 @@ template outputEPub3() {
}
{ /+ OEBPS/[segments].xhtml (the document contents) +/
foreach (seg_filename; doc_matters.has.segnames_lv_0_to_4) {
- string fn = pth_epub3.fn_oebps_content_xhtml(doc_matters.src.filename, seg_filename);
+ string fn = pth_epub3.fn_oebps_content_xhtml(seg_filename);
auto zip_arc_member_file = new ArchiveMember();
zip_arc_member_file.name = fn;
auto zip_data = new OutBuffer();
@@ -699,7 +699,7 @@ template outputEPub3() {
File(fn_dbg, "w").writeln(epub_write.mimetypes);
}
}
- fn = pth_epub3.fn_mimetypes(doc_matters.src.filename);
+ fn = pth_epub3.fn_mimetypes;
EPUBzip(epub_write.mimetypes, fn);
}
{ /+ META-INF/container.xml (identify doc root) +/
@@ -709,7 +709,7 @@ template outputEPub3() {
File(fn_dbg, "w").writeln(epub_write.meta_inf_container_xml);
}
}
- fn = pth_epub3.fn_dmi_container_xml(doc_matters.src.filename);
+ fn = pth_epub3.fn_dmi_container_xml;
EPUBzip(epub_write.meta_inf_container_xml, fn);
}
{ /+ OEBPS/toc_nav.xhtml (navigation toc epub3) +/
@@ -719,7 +719,7 @@ template outputEPub3() {
File(fn_dbg, "w").writeln(epub_write.oebps_toc_nav_xhtml);
}
}
- fn = pth_epub3.fn_oebps_toc_nav_xhtml(doc_matters.src.filename);
+ fn = pth_epub3.fn_oebps_toc_nav_xhtml;
EPUBzip(epub_write.oebps_toc_nav_xhtml, fn);
}
{ /+ OEBPS/toc.ncx (navigation toc epub2) +/
@@ -729,7 +729,7 @@ template outputEPub3() {
File(fn_dbg, "w").writeln(epub_write.oebps_toc_ncx);
}
}
- fn = pth_epub3.fn_oebps_toc_ncx(doc_matters.src.filename);
+ fn = pth_epub3.fn_oebps_toc_ncx;
EPUBzip(epub_write.oebps_toc_ncx, fn);
}
{ /+ OEBPS/content.opf (doc manifest) +/
@@ -739,7 +739,7 @@ template outputEPub3() {
File(fn_dbg, "w").writeln(epub_write.oebps_content_opf);
}
}
- fn = pth_epub3.fn_oebps_content_opf(doc_matters.src.filename);
+ fn = pth_epub3.fn_oebps_content_opf;
EPUBzip(epub_write.oebps_content_opf, fn);
}
{ /+ OEBPS/_sisu/image (images) +/
@@ -759,7 +759,7 @@ template outputEPub3() {
}
}
auto fn_src = doc_matters.src.image_dir_path ~ "/" ~ image;
- auto fn_out = pth_epub3.doc_oebps_image(doc_matters.src.filename.to!string) ~ "/" ~ image;
+ auto fn_out = pth_epub3.doc_oebps_image ~ "/" ~ image;
if (exists(fn_src)) {
{
auto zip_arc_member_file = new ArchiveMember();
@@ -783,7 +783,7 @@ template outputEPub3() {
: File(fn_dbg, "w").writeln(css.dark.epub);
}
}
- fn = pth_epub3.fn_oebps_css(doc_matters.src.filename);
+ fn = pth_epub3.fn_oebps_css;
auto zip_arc_member_file = new ArchiveMember();
zip_arc_member_file.name = fn;
auto zip_data = new OutBuffer();
diff --git a/src/doc_reform/output/paths_output.d b/src/doc_reform/output/paths_output.d
index 795da4c..0ca9fa7 100644
--- a/src/doc_reform/output/paths_output.d
+++ b/src/doc_reform/output/paths_output.d
@@ -77,45 +77,11 @@ template DocReformOutPathsFnPd() {
return _PathsStruct();
}
}
-template DocReformPathsUrl() {
- import std.format;
- mixin DocReformRgxInit;
- static auto rgx = Rgx();
- auto DocReformPathsUrl(M)(M doc_matters) {
- struct _UrlPathsStruct {
- string doc_root() {
- string _doc_root = (doc_matters.conf_make_meta.conf.webserv_url_doc_path.length > 0)
- ? doc_matters.conf_make_meta.conf.webserv_url_doc_root
- : "file://" ~ doc_matters.output_path;
- return _doc_root;
- }
- string html_seg(string html_segname, string obj_id) { // TODO bespoke for sqlite
- string _url = format(q"┃%s/%s/html/%s/%s.html#%s┃",
- doc_root,
- doc_matters.src.language,
- doc_matters.src.filename_base,
- html_segname,
- obj_id
- );
- if (html_segname.empty || obj_id.empty) {
- if (
- doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose
- ) {
- writeln("sqlite object missing segname or object id: ", _url);
- }
- _url = "";
- }
- return _url;
- }
- }
- return _UrlPathsStruct();
- }
-}
+
template DocReformDocRootTreeHTML() {
mixin DocReformRgxInit;
static auto rgx = Rgx();
- auto DocReformDocRootTreeHTML(Lng)(Lng lng) {
+ auto DocReformDocRootTreeHTML()(string lng) {
auto lng_pth = DocReformOutPaths!()("", lng);
string base_dir = "html";
string suffix = ".html";
@@ -129,7 +95,7 @@ template DocReformDocRootTreeHTML() {
string base_filename_seg(string fn_src) {
return base_filename(fn_src) ~ "." ~ lng;
}
- string docroot() {
+ string doc_root() {
return asNormalizedPath(lng_pth.output_root).array;
}
string base() {
@@ -172,19 +138,19 @@ template DocReformDocRootTreeHTML() {
template DocReformPathsHTML() {
mixin DocReformRgxInit;
static auto rgx = Rgx();
- auto DocReformPathsHTML(Po,Lng)(
- Po root_pth,
- Lng lng,
+ auto DocReformPathsHTML()(
+ string root_pth,
+ string lng,
) {
auto doc_tree = DocReformDocRootTreeHTML!()(lng);
string base_dir = "html";
string suffix = ".html";
struct _PathsStruct {
- string docroot() {
- return asNormalizedPath(root_pth.chainPath(doc_tree.docroot)).array;
+ string doc_root() {
+ return asNormalizedPath(root_pth.chainPath(doc_tree.doc_root)).array;
}
string harvest(string fn_harvest) {
- return docroot ~ "/" ~ fn_harvest;
+ return doc_root ~ "/" ~ fn_harvest;
}
string base() {
return asNormalizedPath(root_pth.chainPath(doc_tree.base)).array;
@@ -223,46 +189,88 @@ template DocReformPathsHTML() {
return _PathsStruct();
}
}
-template DocReformUrlPathsHTML() {
+template DocReformUrlsHTML() {
+ import std.format;
mixin DocReformRgxInit;
static auto rgx = Rgx();
- auto DocReformUrlPathsHTML(Po,Lng)(
- Po root_pth,
- Lng lng,
+ auto DocReformUrlsHTML()(
+ string url_doc_root,
+ string lng,
) {
auto doc_tree = DocReformDocRootTreeHTML!()(lng);
string base_dir = "html";
string suffix = ".html";
struct _PathsStruct {
- string docroot() {
- return asNormalizedPath(root_pth.chainPath(doc_tree.docroot)).array;
+ string doc_root() {
+ return url_doc_root ~ asNormalizedPath(doc_tree.doc_root).array;
}
string harvest(string fn_harvest) {
- return docroot ~ "/" ~ fn_harvest;
+ return format(q"┃%s/%s┃",
+ doc_root,
+ fn_harvest,
+ );
}
string base() {
- return asNormalizedPath(root_pth.chainPath(doc_tree.base)).array;
+ return format(q"┃%s/%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.base).array,
+ );
}
string image() {
- return asNormalizedPath(root_pth.chainPath(doc_tree.image)).array;
+ return format(q"┃%s/%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.image).array,
+ );
}
string css() {
- return asNormalizedPath(root_pth.chainPath(doc_tree.css)).array;
+ return format(q"┃%s/%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.css).array,
+ );
}
string fn_seg_css() {
- return asNormalizedPath(root_pth.chainPath(doc_tree.fn_seg_css)).array;
+ return format(q"┃%s/%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.fn_seg_css).array,
+ );
}
string fn_scroll_css() {
- return asNormalizedPath(root_pth.chainPath(doc_tree.fn_scroll_css)).array;
+ return format(q"┃%s/%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.fn_scroll_css).array,
+ );
}
string seg(string fn_src) {
- return asNormalizedPath(root_pth.chainPath(doc_tree.seg(fn_src))).array;
+ return format(q"┃%s/%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.seg(fn_src)).array,
+ );
}
string fn_scroll(string fn_src) {
- return asNormalizedPath(root_pth.chainPath(doc_tree.fn_scroll(fn_src))).array;
+ return format(q"┃%s/%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.fn_scroll(fn_src)).array,
+ );
}
string fn_seg(string fn_src, string seg_filename) {
- return asNormalizedPath(root_pth.chainPath(doc_tree.fn_seg(fn_src, seg_filename))).array;
+ return format(q"┃%s/%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.fn_seg(fn_src, seg_filename)).array,
+ );
+ }
+ string fn_scroll_obj_num(string fn_src, string obj_num) {
+ return format(q"┃%s/%s#%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.fn_scroll(fn_src)).array,
+ obj_num,
+ );
+ }
+ string fn_seg_obj_num(string fn_src, string seg_filename, string obj_num) {
+ return format(q"┃%s/%s#%s┃",
+ url_doc_root,
+ asNormalizedPath(doc_tree.fn_seg(fn_src, seg_filename)).array,
+ obj_num,
+ );
}
string tail_seg(string fn_src) {
return doc_tree.tail_seg(fn_src);
@@ -280,9 +288,9 @@ template DocReformUrlPathsHTML() {
template DocReformPathsEPUB() {
mixin DocReformRgxInit;
static auto rgx = Rgx();
- auto DocReformPathsEPUB(Po,Lng)(
- Po output_pth_root,
- Lng lng,
+ auto DocReformPathsEPUB()(
+ string output_pth_root,
+ string lng,
) {
auto out_pth = DocReformOutPaths!()(output_pth_root, lng);
string base_dir = "epub";
@@ -293,44 +301,50 @@ template DocReformPathsEPUB() {
string base_filename(string fn_src) {
return fn_src.baseName.stripExtension ~ "." ~ lng;
}
- string epub_file(string fn_src) {
- return asNormalizedPath(base.chainPath(base_filename(fn_src) ~ ".epub")).array;
+ string base_filename(string fn_src) {
+ return fn_src.baseName.stripExtension;
}
- string dirtop() {
- return "".chainPath("").array;
+ string base_filename_epub(string fn_src) {
+ return base_filename(fn_src) ~ "." ~ lng;
}
- string doc_meta_inf(string fn_src) {
- return asNormalizedPath(dirtop.chainPath("META-INF")).array;
+ string doc_meta_inf() {
+ return asNormalizedPath("META-INF").array;
}
- string doc_oebps(string fn_src) {
- return asNormalizedPath(dirtop.chainPath("OEBPS")).array;
+ string doc_oebps() {
+ return asNormalizedPath("OEBPS").array;
}
- string doc_oebps_css(string fn_src) {
- return asNormalizedPath(doc_oebps(fn_src).chainPath("css")).array;
+ string doc_oebps_css() {
+ return asNormalizedPath(doc_oebps.chainPath("css")).array;
}
- string doc_oebps_image(string fn_src) {
- return asNormalizedPath(doc_oebps(fn_src).chainPath("image")).array;
+ string doc_oebps_image() {
+ return asNormalizedPath(doc_oebps.chainPath("image")).array;
}
- string fn_mimetypes(string fn_src) {
+ string epub_file(string fn_src) {
+ return asNormalizedPath(base.chainPath(base_filename(fn_src) ~ ".epub")).array;
+ }
+ string dirtop() {
+ return "".chainPath("").array;
+ }
+ string fn_mimetypes() {
return asNormalizedPath(dirtop.chainPath("mimetypes")).array;
}
- string fn_dmi_container_xml(string fn_src) {
- return asNormalizedPath(doc_meta_inf(fn_src).chainPath("container.xml")).array;
+ string fn_dmi_container_xml() {
+ return asNormalizedPath(doc_meta_inf.chainPath("container.xml")).array;
}
- string fn_oebps_toc_nav_xhtml(string fn_src) {
- return asNormalizedPath(doc_oebps(fn_src).chainPath("toc_nav.xhtml")).array;
+ string fn_oebps_toc_nav_xhtml() {
+ return asNormalizedPath(doc_oebps.chainPath("toc_nav.xhtml")).array;
}
- string fn_oebps_toc_ncx(string fn_src) {
- return asNormalizedPath(doc_oebps(fn_src).chainPath("toc.ncx")).array;
+ string fn_oebps_toc_ncx() {
+ return asNormalizedPath(doc_oebps.chainPath("toc.ncx")).array;
}
- string fn_oebps_content_opf(string fn_src) {
- return asNormalizedPath(doc_oebps(fn_src).chainPath("content.opf")).array;
+ string fn_oebps_content_opf() {
+ return asNormalizedPath(doc_oebps.chainPath("content.opf")).array;
}
- string fn_oebps_content_xhtml(string fn_src, string seg_filename) {
- return asNormalizedPath(doc_oebps(fn_src).chainPath(seg_filename ~ ".xhtml")).array;
+ string fn_oebps_content_xhtml(string seg_filename) {
+ return asNormalizedPath(doc_oebps.chainPath(seg_filename ~ ".xhtml")).array;
}
- string fn_oebps_css(string fn_src) {
- return asNormalizedPath(doc_oebps_css(fn_src).chainPath("epub.css")).array;
+ string fn_oebps_css() {
+ return asNormalizedPath(doc_oebps_css.chainPath("epub.css")).array;
}
/+ debug +/
string dbg_docdir(string fn_src) {
@@ -472,9 +486,9 @@ template DocReformPathsLaTeX() {
template DocReformPathsSQLiteDiscrete() {
mixin DocReformRgxInit;
static auto rgx = Rgx();
- auto DocReformPathsSQLiteDiscrete(Po,Lng)(
- Po output_pth_root,
- Lng lng,
+ auto DocReformPathsSQLiteDiscrete()(
+ string output_pth_root,
+ string lng,
) {
struct _PathsStruct {
string base_filename(string fn_src) {
diff --git a/src/doc_reform/output/sqlite.d b/src/doc_reform/output/sqlite.d
index 57c90e0..5bc1551 100644
--- a/src/doc_reform/output/sqlite.d
+++ b/src/doc_reform/output/sqlite.d
@@ -7,7 +7,9 @@ import
import d2sqlite3;
import std.typecons : Nullable;
mixin DocReformOutputRgxInit;
+mixin InternalMarkup;
static auto rgx = Rgx();
+static auto mkup = InlineMarkup();
long _metadata_tid_lastrowid;
template SQLiteHubBuildTablesAndPopulate() {
void SQLiteHubBuildTablesAndPopulate(D,M)(
@@ -61,6 +63,7 @@ template SQLiteHubDiscreteBuildTablesAndPopulate() {
const D doc_abstraction,
M doc_matters,
) {
+ auto url_html = DocReformUrlsHTML!()(doc_matters.conf_make_meta.conf.webserv_url_doc_root, doc_matters.src.language);
auto pth_sqlite = DocReformPathsSQLiteDiscrete!()(doc_matters.output_path, doc_matters.src.language);
pth_sqlite.base.mkdirRecurse;
auto db = Database(pth_sqlite.sqlite_file(doc_matters.src.filename));
@@ -867,18 +870,18 @@ template SQLiteTablesReCreate() {
DROP INDEX IF EXISTS idx_language_document_char;
DROP INDEX IF EXISTS idx_classify_topic_register;
DROP TABLE IF EXISTS metadata_and_text;
+ DROP TABLE IF EXISTS topic_register;
DROP TABLE IF EXISTS doc_objects;
DROP TABLE IF EXISTS urls;
CREATE TABLE metadata_and_text (
- uid VARCHAR(256) UNIQUE, /* filename, language char, pod/txt (decide on delimiter [,;:/]) */
- src_composite_id_per_txt VARCHAR(256) NOT NULL, /* UNIQUE, /* z pod name if any + src filename + language code */
- src_composite_id_per_pod VARCHAR(256) NOT NULL, /* z pod name if any + src filename */
+ uid VARCHAR(256) UNIQUE, -- filename, language char, pod/txt (decide on delimiter [,;:/])
+ src_composite_id_per_txt VARCHAR(256) NOT NULL, -- UNIQUE, z pod name if any + src filename + language code
+ src_composite_id_per_pod VARCHAR(256) NOT NULL, -- z pod name if any + src filename
title VARCHAR(800) NOT NULL,
title_main VARCHAR(400) NOT NULL,
title_sub VARCHAR(400) NULL,
title_short VARCHAR(400) NULL,
title_edition VARCHAR(10) NULL,
- title_note VARCHAR(2500) NULL,
title_language VARCHAR(100) NULL,
title_language_char VARCHAR(6) NULL,
creator_author VARCHAR(600) NOT NULL,
@@ -908,14 +911,13 @@ template SQLiteTablesReCreate() {
date_translated VARCHAR(10) NULL,
date_original_publication VARCHAR(10) NULL,
date_generated VARCHAR(10) NULL,
- publisher VARCHAR(600) NULL,
+ original_title VARCHAR(800) NULL,
original_publisher VARCHAR(600) NULL,
original_language VARCHAR(100) NULL,
original_language_char VARCHAR(6) NULL,
original_source VARCHAR(600) NULL,
original_institution VARCHAR(600) NULL,
original_nationality VARCHAR(100) NULL,
- original_title VARCHAR(800) NULL,
rights_copyright VARCHAR(2500) NULL,
rights_copyright_audio VARCHAR(2500) NULL,
rights_copyright_cover VARCHAR(2500) NULL,
@@ -944,16 +946,34 @@ template SQLiteTablesReCreate() {
notes_prefix_a TEXT NULL,
notes_prefix_b TEXT NULL,
notes_suffix TEXT NULL,
+ publisher VARCHAR(600) NULL,
src_filename VARCHAR(256) NOT NULL,
src_fingerprint VARCHAR(256) NULL,
src_filesize VARCHAR(10) NULL,
src_wordcount VARCHAR(10) NULL,
- pod_name VARCHAR(256) NULL, /* zipped pod, work to be done here */
- pod_fingerprint VARCHAR(256) NULL, /* zipped pod, work to be done here */
- pod_size VARCHAR(10) NULL, /* zipped pod, work to be done here */
- site_url_doc_root VARCHAR(256) NULL, /* url path to doc root */
+ pod_name VARCHAR(256) NULL, -- zipped pod, work to be done here
+ pod_fingerprint VARCHAR(256) NULL, -- zipped pod, work to be done here
+ pod_size VARCHAR(10) NULL, -- zipped pod, work to be done here
+ site_url_doc_root VARCHAR(256) NULL, -- url path to doc root
+ site_url_html_toc VARCHAR(256) NULL,
+ site_url_html_scroll VARCHAR(256) NULL,
+ site_url_epub VARCHAR(256) NULL,
links TEXT NULL
);
+ CREATE TABLE topic_register (
+ -- tid BIGINT PRIMARY KEY,
+ uid_metadata_and_text VARCHAR(256) REFERENCES metadata_and_text(uid) ON DELETE CASCADE,
+ -- src_composite_id_per_txt VARCHAR(256) NOT NULL, - UNIQUE, - z pod name if any + src filename + language code
+ -- src_composite_id_per_pod VARCHAR(256) NOT NULL, - z pod name if any + src filename
+ topic_register_lv0 VARCHAR(250) NOT NULL,
+ topic_register_lv1 VARCHAR(250) NULL,
+ topic_register_lv2 VARCHAR(250) NULL,
+ topic_register_lv3 VARCHAR(250) NULL,
+ topic_register_lv4 VARCHAR(250) NULL,
+ site_url_doc_root VARCHAR(256) NULL, -- url path to doc root
+ site_url_html_toc VARCHAR(256) NULL,
+ site_url_html_scroll VARCHAR(256) NULL
+ );
CREATE TABLE doc_objects (
lid BIGINT PRIMARY KEY,
uid_metadata_and_text VARCHAR(256) REFERENCES metadata_and_text(uid) ON DELETE CASCADE,
@@ -968,7 +988,7 @@ template SQLiteTablesReCreate() {
lev SMALLINT NULL,
node VARCHAR(16) NULL,
parent VARCHAR(16) NULL,
- last_decendant VARCHAR(16) NULL, /* headings only */
+ last_decendant VARCHAR(16) NULL, -- headings only
digest_clean CHAR(256),
digest_all CHAR(256),
html_seg_url CHAR(256),
@@ -1022,15 +1042,12 @@ template SQLiteInsertMetadata() {
title_short,
title_edition,
title_language,
- classify_dewey,
- classify_keywords,
- classify_loc,
- classify_subject,
- classify_topic_register,
creator_author,
creator_author_email,
creator_illustrator,
creator_translator,
+ language_document,
+ language_document_char,
date_added_to_site,
date_available,
date_created,
@@ -1038,18 +1055,6 @@ template SQLiteInsertMetadata() {
date_modified,
date_published,
date_valid,
- identifier_isbn,
- identifier_oclc,
- language_document,
- language_document_char,
- notes_abstract,
- notes_description,
- original_publisher,
- original_language,
- original_language_char,
- original_source,
- original_title,
- publisher,
rights_copyright,
rights_copyright_audio,
rights_copyright_cover,
@@ -1059,57 +1064,25 @@ template SQLiteInsertMetadata() {
rights_copyright_translation,
rights_copyright_video,
rights_license,
+ identifier_oclc,
+ identifier_isbn,
+ classify_dewey,
+ classify_keywords,
+ classify_loc,
+ classify_subject,
+ classify_topic_register,
+ original_title,
+ original_publisher,
+ original_language,
+ original_language_char,
+ original_source,
+ notes_abstract,
+ notes_description,
+ publisher,
site_url_doc_root
)
VALUES (
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s',
- '%s'
+ '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'
);
┃",
_uid,
@@ -1122,15 +1095,12 @@ template SQLiteInsertMetadata() {
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.title_short),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.title_edition),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.title_language),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_dewey),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_keywords),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_loc),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_subject),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_topic_register),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.creator_author),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.creator_author_email),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.creator_illustrator),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.creator_translator),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.language_document),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.language_document_char),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_added_to_site),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_available),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_created),
@@ -1138,18 +1108,6 @@ template SQLiteInsertMetadata() {
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_modified),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_published),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.date_valid),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.identifier_isbn),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.identifier_oclc),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.language_document),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.language_document_char),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.notes_abstract),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.notes_description),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_publisher),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_language),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_language_char),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_source),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_title),
- SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.publisher),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_audio),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_cover),
@@ -1159,8 +1117,50 @@ template SQLiteInsertMetadata() {
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_translation),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_video),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_license),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.identifier_oclc),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.identifier_isbn),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_dewey),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_keywords),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_loc),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_subject),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.classify_topic_register),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.notes_abstract),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.notes_description),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_title),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_publisher),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_language),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_language_char),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.original_source),
+ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.publisher),
SQLinsertDelimiter!()(doc_matters.conf_make_meta.conf.webserv_url_doc_root)
);
+ if (doc_matters.conf_make_meta.meta.classify_topic_register_arr.length > 0) {
+
+ string _insert_topics;
+ foreach (topic; doc_matters.conf_make_meta.meta.classify_topic_register_arr) {
+ string[] subject_tree = topic.split(mkup.sep);
+ _insert_topics ~= format(q"┃
+ INSERT INTO topic_register (
+ uid_metadata_and_text,
+ topic_register_lv0,
+ topic_register_lv1,
+ topic_register_lv2,
+ topic_register_lv3,
+ topic_register_lv4
+ )
+ VALUES (
+ '%s', '%s', '%s', '%s', '%s', '%s'
+ );
+ ┃",
+ _uid,
+ (subject_tree.length > 0) ? subject_tree[0] : "",
+ (subject_tree.length > 1) ? subject_tree[1] : "",
+ (subject_tree.length > 2) ? subject_tree[2] : "",
+ (subject_tree.length > 3) ? subject_tree[3] : "",
+ (subject_tree.length > 4) ? subject_tree[4] : ""
+ );
+ }
+ }
return _insert_metadata;
}
}
@@ -1170,7 +1170,7 @@ template SQLiteInsertDocObjectsLoop() {
M doc_matters,
) {
string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid);
- auto site_url = DocReformPathsUrl!()(doc_matters);
+ auto url_html = DocReformUrlsHTML!()(doc_matters.conf_make_meta.conf.webserv_url_doc_root, doc_matters.src.language);
string insertDocObjectsRow(O)(O obj) {
string _insert_doc_objects_row = format(q"┃
INSERT INTO doc_objects (
@@ -1185,15 +1185,7 @@ template SQLiteInsertDocObjectsLoop() {
html_seg_url
)
VALUES (
- '%s',
- %s,
- '%s',
- '%s',
- '%s',
- %s,
- '%s',
- '%s',
- '%s'
+ '%s', %s, '%s', '%s', '%s', %s, '%s', '%s', '%s'
);
┃",
_uid,
@@ -1204,7 +1196,7 @@ template SQLiteInsertDocObjectsLoop() {
obj.metainfo.heading_lev_markup,
obj.metainfo.is_of_type,
obj.metainfo.is_a,
- site_url.html_seg(obj.tags.html_segment_anchor_tag_is, obj.metainfo.identifier),
+ url_html.fn_seg_obj_num(doc_matters.src.filename, obj.tags.html_segment_anchor_tag_is, obj.metainfo.identifier),
);
return _insert_doc_objects_row;
}
@@ -1403,18 +1395,18 @@ template SQLiteTablesCreate() {
DROP INDEX IF EXISTS idx_language_document_char;
DROP INDEX IF EXISTS idx_classify_topic_register;
DROP TABLE IF EXISTS metadata_and_text;
+ DROP TABLE IF EXISTS topic_register;
DROP TABLE IF EXISTS doc_objects;
DROP TABLE IF EXISTS urls;
CREATE TABLE metadata_and_text (
- uid VARCHAR(256) UNIQUE, /* filename, language char, pod/txt (decide on delimiter [,;:/]) */
- src_composite_id_per_txt VARCHAR(256) NOT NULL, /* UNIQUE, /* z pod name if any + src filename + language code */
- src_composite_id_per_pod VARCHAR(256) NOT NULL, /* z pod name if any + src filename */
+ uid VARCHAR(256) UNIQUE, -- filename, language char, pod/txt (decide on delimiter [,;:/])
+ src_composite_id_per_txt VARCHAR(256) NOT NULL, -- UNIQUE, z pod name if any + src filename + language code
+ src_composite_id_per_pod VARCHAR(256) NOT NULL, -- z pod name if any + src filename
title VARCHAR(800) NOT NULL,
title_main VARCHAR(400) NOT NULL,
title_sub VARCHAR(400) NULL,
title_short VARCHAR(400) NULL,
title_edition VARCHAR(10) NULL,
- title_note VARCHAR(2500) NULL,
title_language VARCHAR(100) NULL,
title_language_char VARCHAR(6) NULL,
creator_author VARCHAR(600) NOT NULL,
@@ -1444,14 +1436,13 @@ template SQLiteTablesCreate() {
date_translated VARCHAR(10) NULL,
date_original_publication VARCHAR(10) NULL,
date_generated VARCHAR(10) NULL,
- publisher VARCHAR(600) NULL,
+ original_title VARCHAR(800) NULL,
original_publisher VARCHAR(600) NULL,
original_language VARCHAR(100) NULL,
original_language_char VARCHAR(6) NULL,
original_source VARCHAR(600) NULL,
original_institution VARCHAR(600) NULL,
original_nationality VARCHAR(100) NULL,
- original_title VARCHAR(800) NULL,
rights_copyright VARCHAR(2500) NULL,
rights_copyright_audio VARCHAR(2500) NULL,
rights_copyright_cover VARCHAR(2500) NULL,
@@ -1480,16 +1471,34 @@ template SQLiteTablesCreate() {
notes_prefix_a TEXT NULL,
notes_prefix_b TEXT NULL,
notes_suffix TEXT NULL,
+ publisher VARCHAR(600) NULL,
src_filename VARCHAR(256) NOT NULL,
src_fingerprint VARCHAR(256) NULL,
src_filesize VARCHAR(10) NULL,
src_wordcount VARCHAR(10) NULL,
- pod_name VARCHAR(256) NULL, /* zipped pod, work to be done here */
- pod_fingerprint VARCHAR(256) NULL, /* zipped pod, work to be done here */
- pod_size VARCHAR(10) NULL, /* zipped pod, work to be done here */
- site_url_doc_root VARCHAR(256) NULL, /* url path to doc root */
+ pod_name VARCHAR(256) NULL, -- zipped pod, work to be done here
+ pod_fingerprint VARCHAR(256) NULL, -- zipped pod, work to be done here
+ pod_size VARCHAR(10) NULL, -- zipped pod, work to be done here
+ site_url_doc_root VARCHAR(256) NULL, -- url path to doc root
+ site_url_html_toc VARCHAR(256) NULL,
+ site_url_html_scroll VARCHAR(256) NULL,
+ site_url_epub VARCHAR(256) NULL,
links TEXT NULL
);
+ CREATE TABLE topic_register (
+ -- tid BIGINT PRIMARY KEY,
+ uid_metadata_and_text VARCHAR(256) REFERENCES metadata_and_text(uid) ON DELETE CASCADE,
+ -- src_composite_id_per_txt VARCHAR(256) NOT NULL, - UNIQUE, - z pod name if any + src filename + language code
+ -- src_composite_id_per_pod VARCHAR(256) NOT NULL, - z pod name if any + src filename
+ topic_register_lv0 VARCHAR(250) NOT NULL,
+ topic_register_lv1 VARCHAR(250) NULL,
+ topic_register_lv2 VARCHAR(250) NULL,
+ topic_register_lv3 VARCHAR(250) NULL,
+ topic_register_lv4 VARCHAR(250) NULL,
+ site_url_doc_root VARCHAR(256) NULL, -- url path to doc root
+ site_url_html_toc VARCHAR(256) NULL,
+ site_url_html_scroll VARCHAR(256) NULL
+ );
CREATE TABLE doc_objects (
lid BIGINT PRIMARY KEY,
uid_metadata_and_text VARCHAR(256) REFERENCES metadata_and_text(uid) ON DELETE CASCADE,
@@ -1504,7 +1513,7 @@ template SQLiteTablesCreate() {
lev SMALLINT NULL,
node VARCHAR(16) NULL,
parent VARCHAR(16) NULL,
- last_decendant VARCHAR(16) NULL, /* headings only */
+ last_decendant VARCHAR(16) NULL, -- headings only
digest_clean CHAR(256),
digest_all CHAR(256),
html_seg_url CHAR(256),