From f7a56d241065cac08e6fba20cb9b658a8f073ad5 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Thu, 15 Nov 2018 18:57:53 -0500 Subject: 0.4.0 sqlite related --- org/default_paths.org | 42 ++++++++++++++++++++++++++++++++++++ org/doc_reform.org | 2 +- org/output_sqlite.org | 25 ++++++++++++++------- src/doc_reform/output/paths_output.d | 35 ++++++++++++++++++++++++++++++ src/doc_reform/output/sqlite.d | 34 ++++++++++++++++++----------- views/version.txt | 2 +- 6 files changed, 117 insertions(+), 23 deletions(-) diff --git a/org/default_paths.org b/org/default_paths.org index 07f1176..6d38825 100644 --- a/org/default_paths.org +++ b/org/default_paths.org @@ -915,6 +915,7 @@ import std.array, std.stdio; import doc_reform.meta.rgx; <> +<> <> <> <> @@ -1012,6 +1013,47 @@ template DocReformOutPathsFnPd() { } #+END_SRC +** _url_ :url: + +#+name: template_paths_url +#+BEGIN_SRC d +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(); + } +} +#+END_SRC + ** _html_ :html: #+name: template_paths_html diff --git a/org/doc_reform.org b/org/doc_reform.org index 69e23a9..afc7477 100644 --- a/org/doc_reform.org +++ b/org/doc_reform.org @@ -26,7 +26,7 @@ struct Version { int minor; int patch; } -enum ver = Version(0, 3, 3); +enum ver = Version(0, 4, 0); #+END_SRC ** compilation restrictions (supported compilers) diff --git a/org/output_sqlite.org b/org/output_sqlite.org index 61390a3..b1c9cf4 100644 --- a/org/output_sqlite.org +++ b/org/output_sqlite.org @@ -205,6 +205,7 @@ template SQLiteInsertDocObjectsLoop() { D doc_abstraction, ) { string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid); + auto site_url = DocReformPathsUrl!()(doc_matters); string insertDocObjectsRow(O)(O obj) { <> return _insert_doc_objects_row; @@ -1508,8 +1509,7 @@ CREATE TABLE metadata_and_text ( 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 */ - src_text TEXT NULL, - fulltext TEXT NULL, + site_url_doc_root VARCHAR(256) NULL, /* url path to doc root */ links TEXT NULL ); #+END_SRC @@ -1522,20 +1522,20 @@ CREATE TABLE doc_objects ( lid BIGINT PRIMARY KEY, uid_metadata_and_text VARCHAR(256) REFERENCES metadata_and_text(uid) ON DELETE CASCADE, ocn SMALLINT, - ocnd VARCHAR(6), - ocns VARCHAR(6), + obj_id VARCHAR(6) NULL, clean TEXT NULL, body TEXT NULL, seg VARCHAR(256) NULL, lev_an VARCHAR(1), - lev SMALLINT NULL, is_of_type VARCHAR(16), is_a VARCHAR(16), + lev SMALLINT NULL, node VARCHAR(16) NULL, parent VARCHAR(16) NULL, last_decendant VARCHAR(16) NULL, /* headings only */ digest_clean CHAR(256), digest_all CHAR(256), + html_seg_url CHAR(256), types CHAR(1) NULL ); #+END_SRC @@ -1612,11 +1612,13 @@ string _insert_doc_objects_row = format(q"¶ INSERT INTO doc_objects ( uid_metadata_and_text, ocn, + obj_id, clean, body, lev, is_of_type, - is_a + is_a, + html_seg_url ) #+END_SRC @@ -1629,8 +1631,10 @@ string _insert_doc_objects_row = format(q"¶ %s, '%s', '%s', + '%s', %s, '%s', + '%s', '%s' ); #+END_SRC @@ -1642,11 +1646,13 @@ string _insert_doc_objects_row = format(q"¶ ¶", _uid, obj.metainfo.ocn, + obj.metainfo.identifier, SQLinsertDelimiter!()(obj_txt["text"]), SQLinsertDelimiter!()(obj_txt["html"]), 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), ); #+END_SRC @@ -1710,7 +1716,8 @@ string _insert_metadata = format(q"¶ rights_copyright_text, rights_copyright_translation, rights_copyright_video, - rights_license + rights_license, + site_url_doc_root ) #+END_SRC @@ -1765,6 +1772,7 @@ string _insert_metadata = format(q"¶ '%s', '%s', '%s', + '%s', '%s' ); #+END_SRC @@ -1820,7 +1828,8 @@ string _insert_metadata = format(q"¶ SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_text), 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.rights_license), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.conf.webserv_url_doc_root) ); #+END_SRC diff --git a/src/doc_reform/output/paths_output.d b/src/doc_reform/output/paths_output.d index f4dc083..f6e8f1b 100644 --- a/src/doc_reform/output/paths_output.d +++ b/src/doc_reform/output/paths_output.d @@ -79,6 +79,41 @@ 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 DocReformPathsHTML() { mixin DocReformRgxInit; static auto rgx = Rgx(); diff --git a/src/doc_reform/output/sqlite.d b/src/doc_reform/output/sqlite.d index bf0d546..0e424e6 100644 --- a/src/doc_reform/output/sqlite.d +++ b/src/doc_reform/output/sqlite.d @@ -913,28 +913,27 @@ template SQLiteTablesReCreate() { 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 */ - src_text TEXT NULL, - fulltext TEXT NULL, + site_url_doc_root VARCHAR(256) NULL, /* url path to doc root */ links TEXT NULL ); CREATE TABLE doc_objects ( lid BIGINT PRIMARY KEY, uid_metadata_and_text VARCHAR(256) REFERENCES metadata_and_text(uid) ON DELETE CASCADE, ocn SMALLINT, - ocnd VARCHAR(6), - ocns VARCHAR(6), + obj_id VARCHAR(6) NULL, clean TEXT NULL, body TEXT NULL, seg VARCHAR(256) NULL, lev_an VARCHAR(1), - lev SMALLINT NULL, is_of_type VARCHAR(16), is_a VARCHAR(16), + lev SMALLINT NULL, node VARCHAR(16) NULL, parent VARCHAR(16) NULL, last_decendant VARCHAR(16) NULL, /* headings only */ digest_clean CHAR(256), digest_all CHAR(256), + html_seg_url CHAR(256), types CHAR(1) NULL ); CREATE INDEX idx_ocn ON doc_objects(ocn); @@ -1021,7 +1020,8 @@ template SQLiteInsertMetadata() { rights_copyright_text, rights_copyright_translation, rights_copyright_video, - rights_license + rights_license, + site_url_doc_root ) VALUES ( '%s', @@ -1070,6 +1070,7 @@ template SQLiteInsertMetadata() { '%s', '%s', '%s', + '%s', '%s' ); ¶", @@ -1119,7 +1120,8 @@ template SQLiteInsertMetadata() { SQLinsertDelimiter!()(doc_matters.conf_make_meta.meta.rights_copyright_text), 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.rights_license), + SQLinsertDelimiter!()(doc_matters.conf_make_meta.conf.webserv_url_doc_root) ); return _insert_metadata; } @@ -1130,34 +1132,41 @@ template SQLiteInsertDocObjectsLoop() { D doc_abstraction, ) { string _uid = SQLinsertDelimiter!()(doc_matters.src.doc_uid); + auto site_url = DocReformPathsUrl!()(doc_matters); string insertDocObjectsRow(O)(O obj) { string _insert_doc_objects_row = format(q"¶ INSERT INTO doc_objects ( uid_metadata_and_text, ocn, + obj_id, clean, body, lev, is_of_type, - is_a + is_a, + html_seg_url ) VALUES ( '%s', %s, '%s', '%s', + '%s', %s, '%s', + '%s', '%s' ); ¶", _uid, obj.metainfo.ocn, + obj.metainfo.identifier, SQLinsertDelimiter!()(obj_txt["text"]), SQLinsertDelimiter!()(obj_txt["html"]), 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), ); return _insert_doc_objects_row; } @@ -1440,28 +1449,27 @@ template SQLiteTablesCreate() { 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 */ - src_text TEXT NULL, - fulltext TEXT NULL, + site_url_doc_root VARCHAR(256) NULL, /* url path to doc root */ links TEXT NULL ); CREATE TABLE doc_objects ( lid BIGINT PRIMARY KEY, uid_metadata_and_text VARCHAR(256) REFERENCES metadata_and_text(uid) ON DELETE CASCADE, ocn SMALLINT, - ocnd VARCHAR(6), - ocns VARCHAR(6), + obj_id VARCHAR(6) NULL, clean TEXT NULL, body TEXT NULL, seg VARCHAR(256) NULL, lev_an VARCHAR(1), - lev SMALLINT NULL, is_of_type VARCHAR(16), is_a VARCHAR(16), + lev SMALLINT NULL, node VARCHAR(16) NULL, parent VARCHAR(16) NULL, last_decendant VARCHAR(16) NULL, /* headings only */ digest_clean CHAR(256), digest_all CHAR(256), + html_seg_url CHAR(256), types CHAR(1) NULL ); CREATE INDEX idx_ocn ON doc_objects(ocn); diff --git a/views/version.txt b/views/version.txt index 700193b..de1a62b 100644 --- a/views/version.txt +++ b/views/version.txt @@ -4,7 +4,7 @@ struct Version { int minor; int patch; } -enum ver = Version(0, 3, 3); +enum ver = Version(0, 4, 0); version (Posix) { version (DigitalMars) { } else version (LDC) { -- cgit v1.2.3