-*- mode: org -*- #+TITLE: metadata (multidocument) harvests #+DESCRIPTION: documents - structuring, various output representations & search #+FILETAGS: :doc_reform:hub: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] #+COPYRIGHT: Copyright (C) 2015 - 2019 Ralph Amissah #+LANGUAGE: en #+STARTUP: indent content hideblocks hidestars #+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc #+OPTIONS: author:nil email:nil creator:nil timestamp:nil #+PROPERTY: header-args :results silent :padline no :exports code :cache no :noweb yes #+EXPORT_SELECT_TAGS: export #+EXPORT_EXCLUDE_TAGS: noexport #+TAGS: assert(a) class(c) debug(d) mixin(m) doc_reform(s) tangle(T) template(t) WEB(W) noexport(n) * document abstraction _summary_ :module:doc_reform:metadoc_show_summary: ** 0. module template metadoc summary - document summary from abstraction #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_summary.d" module doc_reform.meta.metadoc_show_summary; template DocReformMetaDocSummary() { void DocReformMetaDocSummary(S,T)( const S doc_abstraction, T doc_matters, ) { <> <> mixin InternalMarkup; <> if (doc_matters.opt.action.verbose || doc_matters.opt.action.show_summary) { <> } } } #+END_SRC ** (last ocn) #+name: meta_metadoc_show_summary_document #+BEGIN_SRC d string[string] check = [ "last_object_number" : "NA [debug \"checkdoc\" not run]", "last_object_number_body" : "0", "last_object_number_book_index" : "0", ]; foreach (k; doc_matters.has.keys_seq.seg) { foreach (obj; doc_abstraction[k]) { if (obj.metainfo.is_of_part != "empty") { if (!empty(obj.metainfo.object_number)) { if (k == "body") { check["last_object_number_body"] = obj.metainfo.object_number; } if (!(obj.metainfo.object_number.empty)) { check["last_object_number"] = obj.metainfo.object_number; } } if (k == "bookindex") { if (obj.metainfo.object_number_type == 2) { check["last_object_number_book_index"] = obj.metainfo.object_number_book_index; } } } } } #+END_SRC ** document summary #+name: meta_metadoc_show_summary_document #+BEGIN_SRC d writefln( "%s\n\"%s\", %s\n%s [%s]\n%s\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%30-s%10-d\n%s", markup.repeat_character_by_number_provided("-", char_repeat_number), doc_matters.conf_make_meta.meta.title_full, doc_matters.conf_make_meta.meta.creator_author, doc_matters.src.filename, doc_matters.src.language, markup.repeat_character_by_number_provided("-", char_repeat_number), "- toc arr length:", to!int(doc_abstraction["toc"].length), "- doc_abstraction arr length:", to!int(doc_abstraction["body"].length), " doc body last obj on.#:", to!int(check["last_object_number_body"]), " - number of tables:", doc_matters.has.tables, " - number of codeblocks:", doc_matters.has.codeblocks, " - number of poems:", doc_matters.has.poems, " - number of blocks:", doc_matters.has.blocks, " - number of groups:", doc_matters.has.groups, " - number of images:", doc_matters.has.images, "- endnotes length:", // subtract headings (doc_abstraction["endnotes"].length > 2) ? (to!int(doc_abstraction["endnotes"].length - 2)) : 0, "- glossary length:", (doc_abstraction["glossary"].length > 1) ? (to!int(doc_abstraction["glossary"].length)) : 0, "- biblio length:", (doc_abstraction["bibliography"].length > 1) ? (to!int(doc_abstraction["bibliography"].length)) : 0, "- bookindex length:", (doc_abstraction["bookindex"].length > 1) ? (to!int(doc_abstraction["bookindex"].length)) : 0, " book idx last obj on.#:", to!int(check["last_object_number_book_index"]), "- blurb length:", (doc_abstraction["blurb"].length > 1) ? (to!int(doc_abstraction["blurb"].length)) : 0, "* last obj on.#:", to!int(check["last_object_number"]), "number of segments:", (doc_matters.has.segnames_lv4.length > 1) ? (to!int(doc_matters.has.segnames_lv4.length)) : 0, markup.repeat_character_by_number_provided("-", min_repeat_number), ); #+END_SRC * show config ** 0. module template show config --show-config (show config) #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_config.d" module doc_reform.meta.metadoc_show_config; template DocReformShowConfig() { void DocReformShowConfig(T)( T doc_matters, ) { <> <> mixin InternalMarkup; <> if (doc_matters.opt.action.show_config && doc_matters.opt.action.debug_do ) { writeln(doc_matters.conf_make_meta.conf); } if (doc_matters.opt.action.show_config) { <> } } } #+END_SRC ** show config #+name: meta_metadoc_show_config #+BEGIN_SRC d writefln( "%s\n\"%s\", %s\n%s\n%s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n", markup.repeat_character_by_number_provided("-", char_repeat_number), doc_matters.conf_make_meta.meta.title_full, doc_matters.conf_make_meta.meta.creator_author, doc_matters.src.filename, markup.repeat_character_by_number_provided("-", char_repeat_number), "- webserv url domain:", doc_matters.conf_make_meta.conf.webserv_url_domain, "- webserv doc root:", doc_matters.conf_make_meta.conf.webserv_url_doc_root, "- webserv doc path:", doc_matters.conf_make_meta.conf.webserv_url_doc_path, "- webserv images (location):", doc_matters.conf_make_meta.conf.webserv_images, "- webserv cgi:", doc_matters.conf_make_meta.conf.webserv_cgi, "- webserv cgi host:", doc_matters.conf_make_meta.conf.webserv_cgi_host, "- webserv cgi host path:", doc_matters.conf_make_meta.conf.webserv_cgi_host_path, "- webserv cgi port:", doc_matters.conf_make_meta.conf.webserv_cgi_port, "- webserv cgi user:", doc_matters.conf_make_meta.conf.webserv_cgi_user, "- webserv cgi file links:", doc_matters.conf_make_meta.conf.webserv_cgi_file_links, "- output path:", doc_matters.conf_make_meta.conf.output_path, "- processing concordance max:", doc_matters.conf_make_meta.conf.processing_concord_max, "- flag act0:", doc_matters.conf_make_meta.conf.flag_act0, "- flag act1:", doc_matters.conf_make_meta.conf.flag_act1, "- flag act2:", doc_matters.conf_make_meta.conf.flag_act2, "- flag act3:", doc_matters.conf_make_meta.conf.flag_act3, "- flag act4:", doc_matters.conf_make_meta.conf.flag_act4, "- flag act5:", doc_matters.conf_make_meta.conf.flag_act5, "- flag act6:", doc_matters.conf_make_meta.conf.flag_act6, "- flag act7:", doc_matters.conf_make_meta.conf.flag_act7, "- flag act8:", doc_matters.conf_make_meta.conf.flag_act8, "- flag act9:", doc_matters.conf_make_meta.conf.flag_act9, "- default papersize:", doc_matters.conf_make_meta.conf.default_papersize, "- default text wrap:", doc_matters.conf_make_meta.conf.default_text_wrap, "- default emphasis markup symbol:", doc_matters.conf_make_meta.conf.default_emphasis, "- default language:", doc_matters.conf_make_meta.conf.default_language, "- default hash digest:", doc_matters.conf_make_meta.conf.default_digest, "- search flag:", doc_matters.conf_make_meta.conf.search_flag, "- search action:", doc_matters.conf_make_meta.conf.search_action, "- search db:", doc_matters.conf_make_meta.conf.search_db, "- search title:", doc_matters.conf_make_meta.conf.search_title, ); #+END_SRC * show make ** 0. module template show make --show-make (show document make) #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_make.d" module doc_reform.meta.metadoc_show_make; template DocReformShowMake() { void DocReformShowMake(T)( T doc_matters, ) { <> <> mixin InternalMarkup; <> if (doc_matters.opt.action.show_make && doc_matters.opt.action.debug_do ) { writeln(doc_matters.conf_make_meta.make); } if (doc_matters.opt.action.show_make) { <> } } } #+END_SRC ** show make #+name: meta_metadoc_show_make #+BEGIN_SRC d writefln( "%s\n\"%s\", %s\n%s\n%s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n", markup.repeat_character_by_number_provided("-", char_repeat_number), doc_matters.conf_make_meta.meta.title_full, doc_matters.conf_make_meta.meta.creator_author, doc_matters.src.filename, markup.repeat_character_by_number_provided("-", char_repeat_number), "- bold:", doc_matters.conf_make_meta.make.bold, "- breaks:", doc_matters.conf_make_meta.make.breaks, "- cover image:", doc_matters.conf_make_meta.make.cover_image, "- css:", doc_matters.conf_make_meta.make.css, "- emphasis:", doc_matters.conf_make_meta.make.emphasis, "- css:", doc_matters.conf_make_meta.make.css, "- footer:", doc_matters.conf_make_meta.make.footer, "- headings:", doc_matters.conf_make_meta.make.headings, "- home button image:", doc_matters.conf_make_meta.make.home_button_image, "- home button text:", doc_matters.conf_make_meta.make.home_button_text, "- italics:", doc_matters.conf_make_meta.make.italics, "- auto num top at level:", doc_matters.conf_make_meta.make.auto_num_top_at_level, "- auto num top level:", doc_matters.conf_make_meta.make.auto_num_top_lv, "- auto num depth:", doc_matters.conf_make_meta.make.auto_num_depth, "- texpdf font:", doc_matters.conf_make_meta.make.texpdf_font, ); #+END_SRC * show metadata ** 0. module template show metadata --show-metadata (show document metadata) #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_metadata.d" module doc_reform.meta.metadoc_show_metadata; template DocReformShowMetaData() { void DocReformShowMetaData(T)( T doc_matters, ) { <> <> mixin InternalMarkup; <> if (doc_matters.opt.action.show_metadata && doc_matters.opt.action.debug_do ) { writeln(doc_matters.conf_make_meta.meta); } if (doc_matters.opt.action.show_metadata) { <> } } } #+END_SRC ** show metadata #+name: meta_metadoc_show_metadata #+BEGIN_SRC d writefln( "%s\n\"%s\", %s\n%s\n%s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n%30-s%10-s\n", markup.repeat_character_by_number_provided("-", char_repeat_number), doc_matters.conf_make_meta.meta.title_full, doc_matters.conf_make_meta.meta.creator_author, doc_matters.src.filename, markup.repeat_character_by_number_provided("-", char_repeat_number), "- author:", doc_matters.conf_make_meta.meta.creator_author, "- author array:", doc_matters.conf_make_meta.meta.creator_author_arr, "- author surname:", doc_matters.conf_make_meta.meta.creator_author_surname, "- author email:", doc_matters.conf_make_meta.meta.creator_author_email, "- illustrator:", doc_matters.conf_make_meta.meta.creator_illustrator, "- translator:", doc_matters.conf_make_meta.meta.creator_translator, "- title full:", doc_matters.conf_make_meta.meta.title_full, "- title main:", doc_matters.conf_make_meta.meta.title_main, "- title sub:", doc_matters.conf_make_meta.meta.title_subtitle, "- title edition:", doc_matters.conf_make_meta.meta.title_edition, "- title language:", doc_matters.conf_make_meta.meta.title_language, "- title note:", doc_matters.conf_make_meta.meta.title_note, "- classify dewey:", doc_matters.conf_make_meta.meta.classify_dewey, "- classify library of congress:", doc_matters.conf_make_meta.meta.classify_loc, "- classify keywords:", doc_matters.conf_make_meta.meta.classify_keywords, "- classify topic register:", doc_matters.conf_make_meta.meta.classify_topic_register, "- date added to site:", doc_matters.conf_make_meta.meta.date_added_to_site, "- date available:", doc_matters.conf_make_meta.meta.date_available, "- date created:", doc_matters.conf_make_meta.meta.date_created, "- date issued:", doc_matters.conf_make_meta.meta.date_issued, "- date modified:", doc_matters.conf_make_meta.meta.date_modified, "- date published:", doc_matters.conf_make_meta.meta.date_published, "- date valid:", doc_matters.conf_make_meta.meta.date_valid, // links "- notes abstract:", doc_matters.conf_make_meta.meta.notes_abstract, "- notes description:", doc_matters.conf_make_meta.meta.notes_description, "- original language:", doc_matters.conf_make_meta.meta.original_language, "- original language character:", doc_matters.conf_make_meta.meta.original_language_char, "- original source:", doc_matters.conf_make_meta.meta.original_source, "- original title:", doc_matters.conf_make_meta.meta.original_title, // publisher "- rights copyright:", doc_matters.conf_make_meta.meta.rights_copyright, "- rights copyright text:", doc_matters.conf_make_meta.meta.rights_copyright_text, "- rights copyright audio:", doc_matters.conf_make_meta.meta.rights_copyright_audio, "- rights copyright cover:", doc_matters.conf_make_meta.meta.rights_copyright_cover, "- rights copyright illustrations:", doc_matters.conf_make_meta.meta.rights_copyright_illustrations, "- rights copyright photographs:", doc_matters.conf_make_meta.meta.rights_copyright_photographs, "- rights copyright translation:", doc_matters.conf_make_meta.meta.rights_copyright_translation, "- rights copyright video:", doc_matters.conf_make_meta.meta.rights_copyright_video, "- rights license:", doc_matters.conf_make_meta.meta.rights_license, ); #+END_SRC * shared init ? ** init *** imports #+name: metadoc_show_imports_shared #+BEGIN_SRC d import std.array, std.exception, std.regex, std.stdio, std.string, std.traits, std.typecons, std.uni, std.utf, std.conv : to; #+END_SRC *** imports #+name: metadoc_show_summary_imports #+BEGIN_SRC d import doc_reform.meta.defaults, doc_reform.meta.rgx; #+END_SRC *** initialize :report: #+name: metadoc_show_initialize #+BEGIN_SRC d auto markup = InlineMarkup(); auto min_repeat_number = 66; auto char_repeat_number = (doc_matters.conf_make_meta.meta.title_full.length + doc_matters.conf_make_meta.meta.creator_author.length + 4); char_repeat_number = (char_repeat_number > min_repeat_number) ? char_repeat_number : min_repeat_number; #+END_SRC