aboutsummaryrefslogtreecommitdiffhomepage
path: root/org/ocda.org
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2024-06-29 13:54:28 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2024-06-29 15:39:08 -0400
commit860b894a10f3526e6bd73d53850764c0ad95ab99 (patch)
treee4a997fcacd3b2dcbff876479ebd1ee718230f1e /org/ocda.org
parentnix minor (diff)
document digests and reduction in use of tuples
Diffstat (limited to 'org/ocda.org')
-rw-r--r--org/ocda.org36
1 files changed, 27 insertions, 9 deletions
diff --git a/org/ocda.org b/org/ocda.org
index 696c4c9..9811545 100644
--- a/org/ocda.org
+++ b/org/ocda.org
@@ -54,6 +54,7 @@ template docAbstraction() {
import
std.algorithm,
std.container,
+ std.digest.sha,
std.file,
std.json,
std.path;
@@ -1001,8 +1002,7 @@ foreach (ref obj; the_document_head_section) {
}
obj = _links(obj);
}
-if (the_document_toc_section.length > 1) {
- // scroll
+if (the_document_toc_section.length > 1) { // writeln("toc"); // scroll
dom_structure_markedup_tags_status_buffer = dom_structure_markedup_tags_status.dup;
dom_structure_collapsed_tags_status_buffer = dom_structure_collapsed_tags_status.dup;
foreach (ref obj; the_document_toc_section) {
@@ -1028,7 +1028,7 @@ if (the_document_toc_section.length > 1) {
// images
string[] _images;
// multiple 1~ levels, loop through document body
-if (the_document_body_section.length > 1) {
+if (the_document_body_section.length > 1) { // writeln("body");
foreach (ref obj; the_document_body_section) {
if (!(obj.metainfo.identifier.empty)) {
if (!(((obj.metainfo.identifier) in tag_assoc)
@@ -1064,12 +1064,26 @@ if (the_document_body_section.length > 1) {
_images ~= extract_images(obj.text);
obj = _image_dimensions(obj, manifested);
}
+ obj.metainfo.sha256 = obj.obj_digest;
obj = _links(obj);
}
}
-auto image_list = (_images.sort()).uniq;
+auto image_list = (_images.sort()).uniq; // also get digest on each image here? // workon
+if (_images.length > 0) {
+ foreach (img; image_list) {
+ try { // also get sha digest on image file
+ // read_image
+ auto data = (cast(byte[]) (manifested.src.image_dir_path ~ "/" ~ img).read);
+ // calculate, digest, hash
+ writefln("%s\n%-(%02x%)::%s ⋅ %s", img, data.sha256Of, data.length, img);
+ writefln("%-(%02x%) ⋅ %s ⋅ %s", data.sha256Of, img, data.length);
+ } catch (Exception ex) {
+ writeln("WARNING, image not found: ", img, "\n ", manifested.src.image_dir_path ~ "/" ~ img);
+ }
+ }
+}
// endnotes optional only one 1~ level
-if (the_document_endnotes_section.length > 1) {
+if (the_document_endnotes_section.length > 1) { // writeln("endnotes");
dom_structure_markedup_tags_status_buffer = dom_structure_markedup_tags_status.dup;
dom_structure_collapsed_tags_status_buffer = dom_structure_collapsed_tags_status.dup;
dom_structure_markedup_tags_status = dom_structure_markedup_tags_status_buffer.dup;
@@ -1104,7 +1118,7 @@ if (the_document_endnotes_section.length > 1) {
}
}
// glossary optional only one 1~ level
-if (the_document_glossary_section.length > 1) {
+if (the_document_glossary_section.length > 1) { // writeln("glossary");
foreach (ref obj; the_document_glossary_section) {
if (obj.metainfo.is_a == "heading") {
debug(dom) { writeln(obj.text); }
@@ -1135,11 +1149,12 @@ if (the_document_glossary_section.length > 1) {
obj.metainfo.ocn = obj_cite_digits.object_number;
obj.metainfo.identifier = obj_cite_digits.identifier;
}
+ obj.metainfo.sha256 = obj.obj_digest;
obj = _links(obj);
}
}
// bibliography optional only one 1~ level
-if (the_document_bibliography_section.length > 1) {
+if (the_document_bibliography_section.length > 1) { // writeln("bibliography");
foreach (ref obj; the_document_bibliography_section) {
if (obj.metainfo.is_a == "heading") {
debug(dom) { writeln(obj.text); }
@@ -1170,6 +1185,7 @@ if (the_document_bibliography_section.length > 1) {
obj.metainfo.ocn = obj_cite_digits.object_number;
obj.metainfo.identifier = obj_cite_digits.identifier;
}
+ obj.metainfo.sha256 = obj.obj_digest;
obj = _links(obj);
}
}
@@ -1177,7 +1193,7 @@ if (the_document_bibliography_section.length > 1) {
int ocn_ = obj_cite_digits.object_number;
int ocn_bkidx_ = 0;
int ocn_bidx_;
-if (the_document_bookindex_section.length > 1) { // scroll
+if (the_document_bookindex_section.length > 1) { // writeln("book index"); // scroll
dom_structure_markedup_tags_status_buffer = dom_structure_markedup_tags_status.dup;
dom_structure_collapsed_tags_status_buffer = dom_structure_collapsed_tags_status.dup;
foreach (ref obj; the_document_bookindex_section) {
@@ -1214,13 +1230,14 @@ if (the_document_bookindex_section.length > 1) {
obj.metainfo.o_n_book_index = obj_cite_digits.bkidx;
obj.metainfo.object_number_type = OCNtype.bkidx;
}
+ obj.metainfo.sha256 = obj.obj_digest;
obj = _links(obj);
}
// TODO assert failure, reinstate
// assert(obj_cite_digit_bkidx == ocn_bidx_ obj_cite_digit_bkidx ~ " == ocn_" ~ ocn_ ~ "?");
}
// blurb optional only one 1~ level
-if (the_document_blurb_section.length > 1) {
+if (the_document_blurb_section.length > 1) { // writeln("blurb");
foreach (ref obj; the_document_blurb_section) {
if (obj.metainfo.is_a == "heading") {
debug(dom) { writeln(obj.text); }
@@ -1251,6 +1268,7 @@ if (the_document_blurb_section.length > 1) {
obj.metainfo.object_number_off = obj_cite_digits.off;
obj.metainfo.object_number_type = OCNtype.non;
}
+ obj.metainfo.sha256 = obj.obj_digest;
obj = _links(obj);
}
}