From 6825a6865c9aa7f235a3825b0e08f3834745ed86 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Thu, 14 Nov 2019 21:23:31 -0500 Subject: 0.9.0 spine (doc-reform renamed) --- src/doc_reform/COPYRIGHT | 8 +- src/doc_reform/doc_reform.d | 955 ------------------------- src/doc_reform/meta/conf_make_meta_structs.d | 8 +- src/doc_reform/meta/metadoc_harvests_authors.d | 2 +- src/doc_reform/meta/metadoc_harvests_topics.d | 2 +- src/doc_reform/output/hub.d | 8 +- src/doc_reform/output/xmls.d | 2 +- src/doc_reform/spine.d | 955 +++++++++++++++++++++++++ 8 files changed, 970 insertions(+), 970 deletions(-) delete mode 100755 src/doc_reform/doc_reform.d create mode 100755 src/doc_reform/spine.d (limited to 'src/doc_reform') diff --git a/src/doc_reform/COPYRIGHT b/src/doc_reform/COPYRIGHT index 0a50313..7003a8b 100644 --- a/src/doc_reform/COPYRIGHT +++ b/src/doc_reform/COPYRIGHT @@ -1,4 +1,4 @@ -- Name: Doc Reform +- Name: Spine, Doc Reform - Description: documents, structuring, processing, publishing, search - static content generator @@ -10,7 +10,7 @@ - code under src/ - License: AGPL 3 or later: - Doc Reform (SiSU), a framework for document structuring, publishing and + Spine, Doc Reform (SiSU), a framework for document structuring, publishing and search Copyright (C) Ralph Amissah @@ -33,7 +33,7 @@ [http://www.fsf.org/licensing/licenses/agpl.html] [http://www.gnu.org/licenses/agpl.html] - - Doc Reform (related to SiSU) uses standard: + - Spine, Doc Reform (related to SiSU) uses standard: - docReform markup syntax - standard SiSU markup syntax with modified headers and minor modifications @@ -48,6 +48,6 @@ [http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary] [http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/html.rb;hb=HEAD] -- Doc Reform markup samples +- Spine, Doc Reform (SiSU) markup samples Individual document content Copyright (Author) [as stated in document header] Individual document content License (Author) [as stated in document header] diff --git a/src/doc_reform/doc_reform.d b/src/doc_reform/doc_reform.d deleted file mode 100755 index f5b2b86..0000000 --- a/src/doc_reform/doc_reform.d +++ /dev/null @@ -1,955 +0,0 @@ -#!/usr/bin/env rdmd -/+ -- Name: Doc Reform - - Description: documents, structuring, processing, publishing, search - - static content generator - - - Author: Ralph Amissah - [ralph.amissah@gmail.com] - - - Copyright: (C) 2015 - 2019 Ralph Amissah, All Rights - Reserved. - - - License: AGPL 3 or later: - - Doc Reform (SiSU), a framework for document structuring, publishing and - search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU AFERO General Public License as published by the - Free Software Foundation, either version 3 of the License, or (at your - option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see [http://www.gnu.org/licenses/]. - - If you have Internet connection, the latest version of the AGPL should be - available at these locations: - [http://www.fsf.org/licensing/licenses/agpl.html] - [http://www.gnu.org/licenses/agpl.html] - - - Doc Reform (related to SiSU) uses standard: - - docReform markup syntax - - standard SiSU markup syntax with modified headers and minor modifications - - docReform object numbering - - standard SiSU object citation numbering & system - - - Hompages: - [http://www.doc_reform.org] - [http://www.sisudoc.org] - - - Git - [http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary] - [http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/html.rb;hb=HEAD] - -+/ -module doc_reform.sisu_document_parser; -import - doc_reform.conf.compile_time_info, - doc_reform.meta.metadoc; -import - std.datetime, - std.getopt, - std.file, - std.path, - std.process; -import - doc_reform.meta, - doc_reform.meta.metadoc_harvest, - doc_reform.meta.metadoc_harvests_authors, - doc_reform.meta.metadoc_harvests_topics, - doc_reform.meta.metadoc_from_src, - doc_reform.meta.conf_make_meta_structs, - doc_reform.meta.conf_make_meta_json, - doc_reform.meta.defaults, - doc_reform.meta.doc_debugs, - doc_reform.meta.rgx, - doc_reform.source.paths_source, - doc_reform.source.read_config_files, - doc_reform.source.read_source_files, - doc_reform.output.hub; -import std.algorithm; -import std.parallelism; -mixin(import("version.txt")); -mixin CompileTimeInfo; -string project_name = "DocReform"; -string program_name = "doc-reform"; -/++ -name "doc_reform" -description "A SiSU inspired document parser writen in D." -homepage "http://sisudoc.org" -+/ -void main(string[] args) { - mixin DocReformRgxInit; - mixin contentJSONtoDocReformStruct; - mixin DocReformBiblio; - mixin DocReformRgxInitFlags; - mixin outputHub; - auto hvst = DocReformHarvest!(); - string flag_action; - string arg_unrecognized; - enum dAM { abstraction, matters } - static auto rgx = Rgx(); - scope(success) { - writefln( - "~ run complete, ok ~ (%s-%s.%s.%s, %s D:%s, %s %s)", - program_name, - _ver.major, _ver.minor, _ver.patch, - __VENDOR__, __VERSION__, - bits, os, - ); - } - scope(failure) { - debug(checkdoc) { - stderr.writefln( - "run failure", - ); - } - } - bool[string] opts = [ - "abstraction" : false, - "assertions" : false, - "concordance" : false, - "dark" : false, - "debug" : false, - "digest" : false, - "epub" : false, - "harvest" : false, - "harvest-authors" : false, - "harvest-topics" : false, - "html" : false, - "html-seg" : false, - "html-scroll" : false, - "latex" : false, - "light" : false, - "manifest" : false, - "hide-ocn" : false, - "ocn-off" : false, - "odf" : false, - "odt" : false, - "parallel" : false, - "parallel-subprocesses" : false, - "pdf" : false, - "quiet" : false, - "pod" : false, - "serial" : false, - "show-summary" : false, - "show-metadata" : false, - "show-make" : false, - "show-config" : false, - "source" : false, - "sqlite-discrete" : false, - "sqlite-db-create" : false, - "sqlite-db-drop" : false, - "sqlite-db-recreate" : false, - "sqlite-delete" : false, - "sqlite-insert" : false, - "sqlite-update" : false, - "text" : false, - "verbose" : false, - "very-verbose" : false, - "xhtml" : false, - "section_toc" : true, - "section_body" : true, - "section_endnotes" : true, - "section_glossary" : true, - "section_biblio" : true, - "section_bookindex" : true, - "section_blurb" : true, - "backmatter" : true, - "skip-output" : false, - "theme-dark" : false, - "theme-light" : false, - "workon" : false, - ]; - string[string] settings = [ - "config" : "", - "output" : "", - "lang" : "all", - "sqlite-filename" : "documents", - ]; - auto helpInfo = getopt(args, - std.getopt.config.passThrough, - "abstraction", "--abstraction document abstraction ", &opts["abstraction"], - "assert", "--assert set optional assertions on", &opts["assertions"], - "concordance", "--concordance file for document", &opts["concordance"], - "dark", "--dark alternative dark theme", &opts["dark"], - "debug", "--debug", &opts["debug"], - "digest", "--digest hash digest for each object", &opts["digest"], - "epub", "--epub process epub output", &opts["epub"], - "harvest", "--harvest extract info on authors & topics from document header metadata", &opts["harvest"], - "harvest-authors", "--harvest-authors extract info on authors from document header metadata", &opts["harvest-authors"], - "harvest-topics", "--harvest-topics extract info on topics from document header metadata", &opts["harvest-topics"], - "html", "--html process html output", &opts["html"], - "html-seg", "--html-seg process html output", &opts["html-seg"], - "html-scroll", "--html-seg process html output", &opts["html-scroll"], - "latex", "--latex output for pdfs", &opts["latex"], - "light", "--light default light theme", &opts["light"], - "manifest", "--manifest process manifest output", &opts["manifest"], - "hide-ocn", "--hide-ocn object cite numbers", &opts["hide-ocn"], - "ocn-off", "--ocn-off object cite numbers", &opts["ocn-off"], - "odf", "--odf open document format text (--odt)", &opts["odf"], - "odt", "--odt open document format text", &opts["odt"], - "parallel", "--parallel parallelisation", &opts["parallel"], - "parallel-subprocesses", "--parallel-subprocesses nested parallelisation", &opts["parallel-subprocesses"], - "quiet|q", "--quiet output to terminal", &opts["quiet"], - "pdf", "--pdf latex output for pdfs", &opts["pdf"], - "pod", "--pod doc reform pod source content bundled", &opts["pod"], - "serial", "--serial serial processing", &opts["serial"], - "show-summary", "--show-summary", &opts["show-summary"], - "show-make", "--show-make", &opts["show-make"], - "show-metadata", "--show-metadata", &opts["show-metadata"], - "show-config", "--show-config", &opts["show-config"], - "source", "--source markup source text content", &opts["source"], - "sqlite-discrete", "--sqlite process discrete sqlite output", &opts["sqlite-discrete"], - "sqlite-db-create", "--sqlite-db-create create db, create tables", &opts["sqlite-db-create"], - "sqlite-db-drop", "--sqlite-db-drop drop tables & db", &opts["sqlite-db-drop"], - "sqlite-db-recreate", "--sqlite-db-recreate create db, create tables", &opts["sqlite-db-recreate"], - "sqlite-delete", "--sqlite-delete process sqlite output", &opts["sqlite-delete"], - "sqlite-insert", "--sqlite-insert process sqlite output", &opts["sqlite-insert"], - "sqlite-update", "--sqlite-update process sqlite output", &opts["sqlite-update"], - "text", "--text process text output", &opts["text"], - "txt", "--txt process text output", &opts["text"], - "verbose|v", "--verbose output to terminal", &opts["verbose"], - "very-verbose", "--very-verbose output to terminal", &opts["very-verbose"], - "xhtml", "--xhtml process xhtml output", &opts["xhtml"], - "section-toc", "--section-toc process table of contents (default)", &opts["section_toc"], - "section-body", "--section-body process document body (default)", &opts["section_body"], - "section-endnotes", "--section-endnotes process document endnotes (default)", &opts["section_endnotes"], - "section-glossary", "--section-glossary process document glossary (default)", &opts["section_glossary"], - "section-biblio", "--section-biblio process document biblio (default)", &opts["section_biblio"], - "section-bookindex", "--section-bookindex process document bookindex (default)", &opts["section_bookindex"], - "section-blurb", "--section-blurb process document blurb (default)", &opts["section_blurb"], - "backmatter", "--section-backmatter process document backmatter (default)", &opts["backmatter"], - "skip-output", "--skip-output", &opts["skip-output"], - "theme-dark", "--theme-dark alternative dark theme", &opts["theme-dark"], - "theme-light", "--theme-light default light theme", &opts["theme-light"], - "workon", "--workon (reserved for some matters under development & testing)", &opts["workon"], - "config", "--config=/path/to/config/file/including/filename", &settings["config"], - "output", "--output=/path/to/output/dir specify where to place output", &settings["output"], - "sqlite-filename", "--sqlite-filename=[filename].sqlite", &settings["sqlite-filename"], - "lang", "--lang=[lang code e.g. =en or =en,es]", &settings["lang"], - ); - if (helpInfo.helpWanted) { - defaultGetoptPrinter("Some information about the program.", helpInfo.options); - } - enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff } - struct OptActions { - bool assertions() { - return opts["assertions"]; - } - bool concordance() { - return opts["concordance"]; - } - auto config_path_set() { - return settings["config"]; - } - bool css_theme_default() { - bool _is_light; - if (opts["light"] || opts["theme-light"]) { - _is_light = true; - } else if (opts["dark"] || opts["theme-dark"]) { - _is_light = false; - } else { - _is_light = true; - } - return _is_light; - } - bool debug_do() { - return opts["debug"]; - } - bool digest() { - return opts["digest"]; - } - bool epub() { - return opts["epub"]; - } - bool harvest() { - return (opts["harvest"] || opts["harvest-authors"] || opts["harvest-topics"]) ? true : false; - } - bool harvest_authors() { - return (opts["harvest"] || opts["harvest-authors"]) ? true : false; - } - bool harvest_topics() { - return (opts["harvest"] || opts["harvest-topics"]) ? true : false; - } - bool html() { - return (opts["html"] || opts["html-seg"] || opts["html-scroll"]) ? true : false; - } - bool html_seg() { - return (opts["html"] || opts["html-seg"]) ? true : false; - } - bool html_scroll() { - return (opts["html"] || opts["html-scroll"]) ? true : false; - } - bool html_stuff() { - return (opts["html"] || opts["html-scroll"] || opts["html-seg"]) ? true : false; - } - bool latex() { - return (opts["latex"] || opts["pdf"]) ? true : false; - } - bool odt() { - return (opts["odf"] || opts["odt"]) ? true : false; - } - bool manifest() { - return opts["manifest"]; - } - bool ocn_hidden() { - return opts["hide-ocn"]; - } - bool ocn_off() { - return opts["ocn-off"]; - } - bool quiet() { - return opts["quiet"]; - } - bool pod() { - return opts["pod"]; - } - bool show_summary() { - return opts["show-summary"]; - } - bool show_make() { - return opts["show-make"]; - } - bool show_metadata() { - return opts["show-metadata"]; - } - bool show_config() { - return opts["show-config"]; - } - bool source() { - return opts["source"]; - } - bool source_or_pod() { - return (opts["pod"] || opts["source"]) ? true : false; - } - bool sqlite_discrete() { - return opts["sqlite-discrete"]; - } - bool sqlite_db_drop() { - return (opts["sqlite-db-recreate"] || opts["sqlite-db-drop"]) ? true : false; - } - bool sqlite_db_create() { - return (opts["sqlite-db-recreate"] || opts["sqlite-db-create"]) ? true : false; - } - bool sqlite_delete() { - return opts["sqlite-delete"]; - } - bool sqlite_update() { - return (opts["sqlite-update"] || opts["sqlite-insert"]) ? true : false; - } - bool sqlite_shared_db_action() { - return ( - opts["sqlite-db-recreate"] - || opts["sqlite-db-create"] - || opts["sqlite-delete"] - || opts["sqlite-insert"] - || opts["sqlite-update"] - ) ? true : false; - } - bool text() { - return opts["text"]; - } - bool verbose() { - return (opts["verbose"] || opts["very-verbose"]) ? true : false; - } - bool very_verbose() { - return opts["very-verbose"]; - } - bool xhtml() { - return opts["xhtml"]; - } - bool section_toc() { - return opts["section_toc"]; - } - bool section_body() { - return opts["section_body"]; - } - bool section_endnotes() { - return opts["section_endnotes"]; - } - bool section_glossary() { - return opts["section_glossary"]; - } - bool section_biblio() { - return opts["section_biblio"]; - } - bool section_bookindex() { - return opts["section_bookindex"]; - } - bool section_blurb() { - return opts["section_blurb"]; - } - bool backmatter() { - return opts["backmatter"]; - } - bool skip_output() { - return opts["skip-output"]; - } - bool workon() { - return opts["workon"]; - } - auto languages_set() { - return settings["lang"].split(","); - } - auto output_dir_set() { - return settings["output"]; - } - auto sqlite_filename() { - return settings["sqlite-filename"]; - } - bool parallelise() { - bool _is; - if (opts["parallel"] == true) { - _is = true; - if (sqlite_shared_db_action) { _is = false; } - } else if (opts["parallel"] == false - && opts["serial"] == true) { - _is = false; - } else if ( - opts["abstraction"] - || concordance - || harvest - || html - || epub - || odt - || latex - || manifest - || source_or_pod - || sqlite_discrete - ) { - _is = true; - } else { _is = false; } - return _is; - } - bool parallelise_subprocesses() { - return opts["parallel-subprocesses"]; - } - auto output_task_scheduler() { - int[] schedule; - if (source_or_pod) { - schedule ~= outTask.source_or_pod; - } - if (sqlite_discrete) { - schedule ~= outTask.sqlite; - } - if (epub) { - schedule ~= outTask.epub; - } - if (html_scroll) { - schedule ~= outTask.html_scroll; - } - if (html_seg) { - schedule ~= outTask.html_seg; - } - if (html_stuff) { - schedule ~= outTask.html_stuff; - } - if (odt) { - schedule ~= outTask.odt; - } - if (latex) { - schedule ~= outTask.latex; - } - return schedule.sort().uniq; - } - bool abstraction() { - return ( - opts["abstraction"] - || concordance - || source_or_pod - || harvest - || html - || epub - || odt - || latex - || manifest - || sqlite_discrete - || sqlite_delete - || sqlite_update - ) ? true : false; - } - bool meta_processing_general() { - return ( - opts["abstraction"] - || html - || epub - || odt - || latex - || sqlite_discrete - || sqlite_update - ) ? true :false; - } - bool meta_processing_xml_dom() { - return ( - opts["abstraction"] - || html - || epub - || odt - || sqlite_discrete - || sqlite_update - ) ? true : false; - } - } - auto _opt_action = OptActions(); - auto program_info() { - struct ProgramInfo { - string project() { - return project_name; - } - string name() { - return program_name; - } - string ver() { - string ver_ = format( - "%s.%s.%s", - _ver.major, _ver.minor, _ver.patch, - ); - return ver_; - } - string compiler() { - string ver_ = format( - "%s D:%s, %s %s", - __VENDOR__, __VERSION__, - bits, os, - ); - return ver_; - } - } - return ProgramInfo(); - } - auto _env = [ - "pwd" : environment["PWD"], - "home" : environment["HOME"], - ]; - auto _manifested = PathMatters!()(_opt_action, _env, ""); - auto _manifests = [ _manifested ]; - ConfComposite _make_and_meta_struct; - if (_opt_action.config_path_set.empty) { - foreach(arg; args[1..$]) { - if (!(arg.match(rgx.flag_action))) { /+ cli markup source path +/ // get first input markup source file names for processing - _manifested = PathMatters!()(_opt_action, _env, arg); - { /+ local site config +/ - auto _config_local_site_struct = readConfigSite!()(_manifested, _env); - if (_config_local_site_struct.filetype == "yaml") { - import doc_reform.meta.conf_make_meta_yaml; - _make_and_meta_struct = _config_local_site_struct.configParseYAMLreturnDocReformStruct!()(_make_and_meta_struct, _manifested); // - get local site config - break; - } - } - } - } - } else { - { /+ local site config +/ - auto _config_local_site_struct = readConfigSite!()(_manifested, _env, _opt_action.config_path_set); - if (_config_local_site_struct.filetype == "yaml") { - import doc_reform.meta.conf_make_meta_yaml; - _make_and_meta_struct = _config_local_site_struct.configParseYAMLreturnDocReformStruct!()(_make_and_meta_struct, _manifested); // - get local site config - } - } - } - foreach(arg; args[1..$]) { // refigure how args relate to _opt_action, need path from _opt_action or args early _manifested too late, work on (search for PathMatters and .harvest, - auto _manifest_start = PodManifest!()(arg); - if (arg.match(rgx.flag_action)) { /+ cli instruction, flag do +/ - flag_action ~= " " ~ arg; // flags not taken by getopt - } else { /+ cli, assumed to be path to source files +/ - if ( /+ pod files +/ - !(arg.match(rgx.src_pth_sst_or_ssm)) - && _manifest_start.pod_manifest_file_with_path - && _opt_action.abstraction - ) { - string pod_manifest_root_content_paths_to_markup_location_raw_; - string markup_contents_location_; - string sisudoc_txt_ = _manifest_start.pod_manifest_file_with_path; - enforce( - exists(sisudoc_txt_)!=0, - "file not found: «" ~ - sisudoc_txt_ ~ "»" - ); - if (exists(sisudoc_txt_)) { - try { - if (exists(sisudoc_txt_)) { - import dyaml; - try { - Node pod_manifest_yaml = Loader.fromFile(sisudoc_txt_).load(); - if ("doc" in pod_manifest_yaml) { - if (pod_manifest_yaml["doc"].type.mapping - && pod_manifest_yaml["doc"].tag.match(rgx.yaml_tag_is_map) - ) { - if ("path" in pod_manifest_yaml["doc"]) { - if (pod_manifest_yaml["doc"]["path"].tag.match(rgx.yaml_tag_is_seq)) { - foreach (string _path; pod_manifest_yaml["doc"]["path"]) { - markup_contents_location_ ~= _path ~ "\n"; - pod_manifest_root_content_paths_to_markup_location_raw_ ~= - _path ~ "\n"; - } - } else if ( - pod_manifest_yaml["doc"]["path"].type.string - && pod_manifest_yaml["doc"]["path"].tag.match(rgx.yaml_tag_is_str) - ) { - markup_contents_location_ = pod_manifest_yaml["doc"]["path"].get!string; - pod_manifest_root_content_paths_to_markup_location_raw_ = - pod_manifest_yaml["doc"]["path"].get!string; - } - } - if ("filename" in pod_manifest_yaml["doc"]) { - if (pod_manifest_yaml["doc"]["filename"].tag.match(rgx.yaml_tag_is_seq)) { - foreach (string _filename; pod_manifest_yaml["doc"]["filename"]) { - if ("language" in pod_manifest_yaml["doc"]) { - if (pod_manifest_yaml["doc"]["language"].tag.match(rgx.yaml_tag_is_seq)) { - foreach (string _lang; pod_manifest_yaml["doc"]["language"]) { - markup_contents_location_ ~= - "media/text/" - ~ _lang ~ "/" - ~ _filename ~ "\n"; - } - } else if (pod_manifest_yaml["doc"]["language"].tag.match(rgx.yaml_tag_is_str) - ) { - markup_contents_location_ = - "media/text/" - ~ pod_manifest_yaml["doc"]["language"].get!string - ~ "/" ~ _filename ~ "\n"; - } else { - string _lang_default = "en"; - markup_contents_location_ ~= - "media/text/" - ~ _lang_default ~ "/" - ~ pod_manifest_yaml["doc"]["filename"].get!string ~ "\n"; - } - } else { - string _lang_default = "en"; - markup_contents_location_ ~= - "media/text/" - ~ _lang_default ~ "/" - ~ pod_manifest_yaml["doc"]["filename"].get!string ~ "\n"; - } - } - } else if ( - pod_manifest_yaml["doc"]["filename"].type.string - && pod_manifest_yaml["doc"]["filename"].tag.match(rgx.yaml_tag_is_str) - ) { - if ("language" in pod_manifest_yaml["doc"]) { - if (pod_manifest_yaml["doc"]["language"].tag.match(rgx.yaml_tag_is_seq)) { - foreach (string _lang; pod_manifest_yaml["doc"]["language"]) { - markup_contents_location_ ~= - "media/text/" - ~ _lang ~ "/" - ~ pod_manifest_yaml["doc"]["filename"].get!string ~ "\n"; - } - } else if (pod_manifest_yaml["doc"]["language"].tag.match(rgx.yaml_tag_is_str)) { - markup_contents_location_ = - "media/text/" - ~ pod_manifest_yaml["doc"]["language"].get!string - ~ "/" ~ pod_manifest_yaml["doc"]["filename"].get!string ~ "\n"; - } else { - string _lang_default = "en"; - markup_contents_location_ ~= - "media/text/" - ~ _lang_default ~ "/" - ~ pod_manifest_yaml["doc"]["filename"].get!string ~ "\n"; - } - } else { - string _lang_default = "en"; - markup_contents_location_ ~= - "media/text/" - ~ _lang_default ~ "/" - ~ pod_manifest_yaml["doc"]["filename"].get!string ~ "\n"; - } - } - } - } - } - - } catch (ErrnoException ex) { - } - } - } catch (ErrnoException ex) { - } catch (FileException ex) { - // Handle errors - } - } else { - writeln("manifest not found: ", sisudoc_txt_); - } - auto markup_contents_locations_arr - = (cast(char[]) markup_contents_location_).split; - auto tmp_dir_ = (sisudoc_txt_).dirName.array; - foreach (markup_contents_location; markup_contents_locations_arr) { - assert(markup_contents_location.match(rgx.src_pth_sst_or_ssm), - "not a recognised file: «" ~ - markup_contents_location ~ "»" - ); - auto markup_contents_location_pth_ = (markup_contents_location).to!string; - Regex!(char) lang_rgx_ = regex(r"/(" ~ _opt_action.languages_set.join("|") ~ ")/"); - if (_opt_action.languages_set[0] == "all" - || (markup_contents_location_pth_).match(lang_rgx_) - ) { - auto _fns = (((tmp_dir_).chainPath(markup_contents_location_pth_)).array).to!string; - _manifested = PathMatters!()(_opt_action, _env, arg, _fns, markup_contents_locations_arr); - _manifests ~= _manifested; - } - } - } else if (arg.match(rgx.src_pth_sst_or_ssm)) { /+ markup txt files +/ - if (exists(arg)==0) { - writeln("ERROR >> Processing Skipped! File not found: ", arg); - } else { - _manifested = PathMatters!()(_opt_action, _env, arg, arg); - _manifests ~= _manifested; - } - } else if (arg.match(rgx.src_pth_zip)) { - // fns_src ~= arg; // gather input markup source file names for processing - } else { // anything remaining, unused - arg_unrecognized ~= " " ~ arg; - } - } - } - if (!(_opt_action.skip_output)) { - if ((_opt_action.debug_do) - || (_opt_action.very_verbose) - ) { - writeln("step0 commence → (without processing files)"); - } - outputHubOp!()(_env, _opt_action); - if ((_opt_action.debug_do) - || (_opt_action.very_verbose) - ) { - writeln("- step0 complete"); - } - } - if (_manifests.length > 1 // _manifests[0] initialized dummy element - && _opt_action.abstraction) { - if (_opt_action.parallelise) { // see else - foreach(manifest; parallel(_manifests[1..$])) { - if (!empty(manifest.src.filename)) { - scope(success) { - if (!(_opt_action.quiet)) { - writefln( - "%s", - "-- ~ document complete, ok ~ ------------------------------------", - ); - } - } - scope(failure) { - debug(checkdoc) { - stderr.writefln( - "~ document run failure ~ (%s v%s)\n\t%s\n%s", - __VENDOR__, __VERSION__, - manifest.src.filename, - "------------------------------------------------------------------", - ); - } - } - enforce( - manifest.src.filename.match(rgx.src_pth_types), - "not a sisu markup filename: «" ~ - manifest.src.filename ~ "»" - ); - if ((_opt_action.debug_do) - || (_opt_action.very_verbose) - ) { - writeln("--->\nstepX commence → (document abstraction)"); - } - auto t = DocReformAbstraction!()(_env, program_info, _opt_action, manifest, _make_and_meta_struct); - static assert(!isTypeTuple!(t)); - static assert(t.length==2); - auto doc_abstraction = t[dAM.abstraction]; - auto doc_matters = t[dAM.matters]; - if ((doc_matters.opt.action.debug_do) - || (doc_matters.opt.action.very_verbose) - ) { - writeln("- stepX complete"); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.verbose - || doc_matters.opt.action.show_summary - ) { - import doc_reform.meta.metadoc_show_summary; - DocReformMetaDocSummary!()(doc_abstraction, doc_matters); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.show_metadata - ) { - import doc_reform.meta.metadoc_show_metadata; - DocReformShowMetaData!()(doc_matters); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.show_make - ) { - import doc_reform.meta.metadoc_show_make; - DocReformShowMake!()(doc_matters); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.show_config - ) { - import doc_reform.meta.metadoc_show_config; - DocReformShowConfig!()(doc_matters); - } - if (doc_matters.opt.action.harvest) { - hvst.harvests ~= DocReformMetaDocHarvest!()(doc_matters, hvst); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.debug_do) { - DocReformDebugs!()(doc_abstraction, doc_matters); - } - /+ ↓ output hub +/ - if (!(doc_matters.opt.action.skip_output)) { - if ((_opt_action.debug_do) - || (_opt_action.very_verbose) - ) { - writeln("step5 commence → (process outputs)"); - } - doc_abstraction.outputHub!()(doc_matters); - if ((_opt_action.debug_do) - || (_opt_action.very_verbose) - ) { - writeln("- step5 complete"); - } - } - scope(exit) { - if (!(_opt_action.quiet)) { - writefln( - "processed file: %s [%s]", - manifest.src.filename, - manifest.src.language - ); - } - destroy(manifest); - } - } else { - /+ no recognized filename provided +/ - writeln("no recognized filename"); - break; // terminate, stop - } - } - } else { // note cannot parallelise sqlite shared db - foreach(manifest; _manifests[1..$]) { - writeln("parallelisation off: actions include sqlite shared db"); - if (!empty(manifest.src.filename)) { - scope(success) { - if (!(_opt_action.quiet)) { - writefln( - "%s", - "-- ~ document complete, ok ~ ------------------------------------", - ); - } - } - scope(failure) { - debug(checkdoc) { - stderr.writefln( - "~ document run failure ~ (%s v%s)\n\t%s\n%s", - __VENDOR__, __VERSION__, - manifest.src.filename, - "------------------------------------------------------------------", - ); - } - } - enforce( - manifest.src.filename.match(rgx.src_pth_types), - "not a sisu markup filename: «" ~ - manifest.src.filename ~ "»" - ); - if ((_opt_action.debug_do) - || (_opt_action.very_verbose) - ) { - writeln("--->\nstepX commence → (document abstraction)"); - } - auto t = DocReformAbstraction!()(_env, program_info, _opt_action, manifest, _make_and_meta_struct); - static assert(!isTypeTuple!(t)); - static assert(t.length==2); - auto doc_abstraction = t[dAM.abstraction]; - auto doc_matters = t[dAM.matters]; - if ((doc_matters.opt.action.debug_do) - || (doc_matters.opt.action.very_verbose) - ) { - writeln("- stepX complete"); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.verbose - || doc_matters.opt.action.show_summary - ) { - import doc_reform.meta.metadoc_show_summary; - DocReformMetaDocSummary!()(doc_abstraction, doc_matters); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.show_metadata - ) { - import doc_reform.meta.metadoc_show_metadata; - DocReformShowMetaData!()(doc_matters); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.show_make - ) { - import doc_reform.meta.metadoc_show_make; - DocReformShowMake!()(doc_matters); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.show_config - ) { - import doc_reform.meta.metadoc_show_config; - DocReformShowConfig!()(doc_matters); - } - if (doc_matters.opt.action.harvest) { - hvst.harvests ~= DocReformMetaDocHarvest!()(doc_matters, hvst); - } - /+ ↓ debugs +/ - if (doc_matters.opt.action.debug_do) { - DocReformDebugs!()(doc_abstraction, doc_matters); - } - /+ ↓ output hub +/ - if (!(doc_matters.opt.action.skip_output)) { - if ((_opt_action.debug_do) - || (_opt_action.very_verbose) - ) { - writeln("step5 commence → (process outputs)"); - } - doc_abstraction.outputHub!()(doc_matters); - if ((_opt_action.debug_do) - || (_opt_action.very_verbose) - ) { - writeln("- step5 complete"); - } - } - scope(exit) { - if (!(_opt_action.quiet)) { - writefln( - "processed file: %s [%s]", - manifest.src.filename, - manifest.src.language - ); - } - destroy(manifest); - } - } else { - /+ no recognized filename provided +/ - writeln("no recognized filename"); - break; // terminate, stop - } - } - } - } - if (hvst.harvests.length > 0) { - if (_opt_action.harvest_topics) { - DocReformMetaDocHarvestsTopics!()(hvst, _make_and_meta_struct, _opt_action); - } - if (_opt_action.harvest_authors) { - DocReformMetaDocHarvestsAuthors!()(hvst.harvests, _make_and_meta_struct, _opt_action); - } - if (!(_opt_action.quiet)) { - import doc_reform.output.paths_output; - auto out_pth = DocReformPathsHTML!()(_make_and_meta_struct.conf.output_path, ""); - if (_opt_action.harvest_authors) { - writeln("- ", out_pth.harvest("authors.html")); - } - if (_opt_action.harvest_topics) { - writeln("- ", out_pth.harvest("topics.html")); - } - } - } -} diff --git a/src/doc_reform/meta/conf_make_meta_structs.d b/src/doc_reform/meta/conf_make_meta_structs.d index 6f6ba10..0678b4f 100644 --- a/src/doc_reform/meta/conf_make_meta_structs.d +++ b/src/doc_reform/meta/conf_make_meta_structs.d @@ -48,9 +48,9 @@ struct ConfCompositeMakeStr { string[] footer; string[] headings; string[] home_button_image; - string home_button_text = "{Doc Reform}http://www.doc-reform.org;" + string home_button_text = "{Spine, Doc Reform}http://www.doc-reform.org;" ~ " {www.doc-reform.org}http://www.doc-reform.org;" - ~ " {sources / git}https://git.doc-reform.org/software/doc-reform"; + ~ " {sources / git}https://git.doc-reform.org/software/spine"; string italics; string auto_num_top_at_level; int auto_num_top_lv = 9; @@ -131,9 +131,9 @@ struct ConfCompositeMakeInit { string[] footer; string[] headings; string[] home_button_image; - string home_button_text = "{Doc Reform}http://www.doc-reform.org;" + string home_button_text = "{Spine, Doc Reform}http://www.doc-reform.org;" ~ " {www.doc-reform.org}http://www.doc-reform.org;" - ~ " {sources / git}https://git.doc-reform.org/software/doc-reform"; + ~ " {sources / git}https://git.doc-reform.org/software/spine"; string[] italics; string auto_num_top_at_level; int auto_num_top_lv = 9; diff --git a/src/doc_reform/meta/metadoc_harvests_authors.d b/src/doc_reform/meta/metadoc_harvests_authors.d index 23707af..acb21ce 100644 --- a/src/doc_reform/meta/metadoc_harvests_authors.d +++ b/src/doc_reform/meta/metadoc_harvests_authors.d @@ -170,7 +170,7 @@ string theme_light_1 = format(q"┃ - +