aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/doc_reform/meta/metadoc.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/doc_reform/meta/metadoc.d')
-rw-r--r--src/doc_reform/meta/metadoc.d296
1 files changed, 0 insertions, 296 deletions
diff --git a/src/doc_reform/meta/metadoc.d b/src/doc_reform/meta/metadoc.d
deleted file mode 100644
index b153347..0000000
--- a/src/doc_reform/meta/metadoc.d
+++ /dev/null
@@ -1,296 +0,0 @@
-/+
-- Name: Spine, Doc Reform [a part of]
- - Description: documents, structuring, processing, publishing, search
- - static content generator
-
- - Author: Ralph Amissah
- [ralph.amissah@gmail.com]
-
- - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved.
-
- - License: AGPL 3 or later:
-
- Spine (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 [https://www.gnu.org/licenses/].
-
- If you have Internet connection, the latest version of the AGPL should be
- available at these locations:
- [https://www.fsf.org/licensing/licenses/agpl.html]
- [https://www.gnu.org/licenses/agpl.html]
-
- - Spine (by 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
-
- - Homepages:
- [https://www.sisudoc.org]
- [https://www.doc-reform.org]
-
- - Git
- [https://git.sisudoc.org/]
-
-+/
-module doc_reform.meta.metadoc;
-@safe:
-template spineAbstraction() {
- import
- std.datetime;
- import
- doc_reform.meta,
- 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.io_in.paths_source,
- doc_reform.io_in.read_config_files,
- doc_reform.io_in.read_source_files,
- doc_reform.io_out.hub;
- mixin spineBiblio;
- mixin outputHub;
- enum headBody { header, body_content, insert_file_list, image_list }
- enum makeMeta { make, meta }
- enum docAbst { doc_abstract_obj, doc_has }
- @system auto spineAbstraction(E,P,O,Cfg,M,S)(
- E _env,
- P program_info,
- O _opt_action,
- Cfg _cfg,
- M _manifest,
- S _make_and_meta_struct
- ){
- { /+ document config/make file +/
- auto _config_document_struct = readConfigDoc!()(_manifest, _env);
- import doc_reform.meta.conf_make_meta_yaml;
- _make_and_meta_struct = _config_document_struct.configParseYAMLreturnSpineStruct!()(_make_and_meta_struct, _manifest, _opt_action, _cfg);
- }
- /+ ↓ read file (filename with path) +/
- /+ ↓ file tuple of header and content +/
- if ((_opt_action.debug_do)
- || (_opt_action.debug_do_stages)
- ) {
- writeln("step1 commence → (get document header & body & insert file list & if needed image list) [", _manifest.src.filename, "]");
- }
- auto _header_body_insertfilelist_imagelist
- = spineRawMarkupContent!()(_opt_action, _manifest.src.path_and_fn);
- static assert(_header_body_insertfilelist_imagelist.length==4);
- if ((_opt_action.debug_do)
- || (_opt_action.debug_do_stages)
- ) {
- writeln("- step1 complete for [", _manifest.src.filename, "]");
- }
- debug(header_and_body) {
- writeln(header);
- writeln(_header_body_insertfilelist_imagelist.length);
- writeln(_header_body_insertfilelist_imagelist.length[headBody.body_content][0]);
- }
- /+ ↓ split header into make and meta +/
- if ((_opt_action.debug_do)
- || (_opt_action.debug_do_stages)
- ) {
- writeln("step2 commence → (read document header (yaml) return struct) [", _manifest.src.filename, "]");
- }
- import doc_reform.meta.conf_make_meta_yaml;
- _make_and_meta_struct =
- docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct!()(
- _header_body_insertfilelist_imagelist[headBody.header],
- _make_and_meta_struct,
- _manifest,
- _opt_action,
- _cfg,
- );
- if ((_opt_action.debug_do)
- || (_opt_action.debug_do_stages)
- ) {
- writeln("- step2 complete for [", _manifest.src.filename, "]");
- }
- /+ ↓ document abstraction: process document, return abstraction as tuple +/
- if ((_opt_action.debug_do)
- || (_opt_action.debug_do_stages)
- ) {
- writeln("step3 commence → (document abstraction (da); da keys; segnames; doc_matters) [", _manifest.src.filename, "]");
- }
- auto da = docAbstraction!()(
- _header_body_insertfilelist_imagelist[headBody.body_content],
- _make_and_meta_struct,
- _opt_action,
- _manifest,
- true,
- );
- auto doc_abstraction = da.document_the;
- auto _doc_has_struct = da.doc_has;
- if ((_opt_action.debug_do)
- || (_opt_action.debug_do_stages)
- ) {
- writeln("- step3 complete for [", _manifest.src.filename, "]");
- }
- if ((_opt_action.debug_do)
- || (_opt_action.debug_do_stages)
- ) {
- writeln("step4 commence → (doc_matters) [", _manifest.src.filename, "]");
- }
- struct DocumentMatters {
- auto generator_program() {
- struct Prog_ {
- string project_name() {
- return "spine";
- }
- string name() {
- return program_info.name;
- }
- string ver() {
- return program_info.ver;
- }
- @trusted string name_and_version() {
- return program_info.name_and_version;
- }
- @trusted string name_version_and_compiler() {
- return program_info.name_version_and_compiler;
- }
- string url_home() {
- return "https://sisudoc.org";
- }
- string url_git() {
- return "https://git.sisudoc.org/projects/";
- }
- auto compiler() {
- return program_info.compiler;
- }
- auto time_output_generated() {
- return program_info.time_output_generated;
- }
- }
- return Prog_();
- }
- auto generated_time() {
- auto _st = Clock.currTime(UTC());
- auto _time = _st.year.to!string
- ~ "-" ~ _st.month.to!int.to!string // prefer as month number
- ~ "-" ~ _st.day.to!string
- ~ " [" ~ _st.isoWeek.to!string ~ "/" ~ _st.dayOfWeek.to!int.to!string ~ "]"
- ~ " " ~ _st.hour.to!string
- ~ ":" ~ _st.minute.to!string
- ~ ":" ~ _st.second.to!string;
- return _time;
- }
- auto conf_make_meta() {
- return _make_and_meta_struct;
- }
- auto has() {
- return _doc_has_struct;
- }
- auto env() {
- struct Env_ {
- auto pwd() {
- return _manifest.env.pwd;
- }
- auto home() {
- return _manifest.env.home;
- }
- }
- return Env_();
- }
- auto opt() {
- struct Opt_ {
- auto action() {
- /+ getopt options, commandline instructions, raw
- - processing instructions --epub --html etc.
- - command line config instructions --output
- +/
- return _opt_action;
- }
- }
- return Opt_();
- }
- auto src() {
- return _manifest.src;
- }
- auto src_path_info() {
- return spinePathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path
- }
- auto pod() {
- return _manifest.pod;
- }
- auto sqlite() {
- struct SQLite_ {
- string filename() {
- string _fn = "";
- string _pth = "";
- if (_opt_action.sqliteDB_filename.length > 0) {
- _fn = _opt_action.sqliteDB_filename;
- } else if (_make_and_meta_struct.conf.w_srv_db_sqlite_filename.length > 0) {
- _fn = _make_and_meta_struct.conf.w_srv_db_sqlite_filename;
- }
- return _fn;
- }
- string path() {
- string _pth = "";
- if (_opt_action.sqliteDB_path.length > 0) {
- _pth = _opt_action.sqliteDB_path;
- } else if (_make_and_meta_struct.conf.w_srv_db_sqlite_path.length > 0) {
- _pth = _make_and_meta_struct.conf.w_srv_db_sqlite_path;
- }
- return _pth;
- }
- string cgi_filename() {
- string _fn = "";
- if (_opt_action.cgi_sqlite_search_filename.length > 0) {
- _fn = _opt_action.cgi_sqlite_search_filename;
- } else if (_make_and_meta_struct.conf.w_srv_cgi_search_script.length > 0) {
- _fn = _make_and_meta_struct.conf.w_srv_cgi_search_script;
- }
- return _fn;
- }
- string cgi_filename_d() {
- string _fn = "";
- if (_opt_action.cgi_sqlite_search_filename_d.length > 0) {
- _fn = _opt_action.cgi_sqlite_search_filename_d;
- } else if (_make_and_meta_struct.conf.w_srv_cgi_search_script_raw_fn_d.length > 0) {
- _fn = _make_and_meta_struct.conf.w_srv_cgi_search_script_raw_fn_d;
- }
- return _fn;
- }
- }
- return SQLite_();
- }
- auto output_path() {
- return _make_and_meta_struct.conf.output_path;
- }
- auto srcs() {
- struct SRC_ {
- auto file_insert_list() {
- return _header_body_insertfilelist_imagelist[headBody.insert_file_list];
- }
- auto image_list() {
- return _doc_has_struct.imagelist;
- }
- }
- return SRC_();
- }
- }
- auto doc_matters = DocumentMatters();
- if ((_opt_action.debug_do)
- || (_opt_action.debug_do_stages)
- ) {
- writeln("- step4 complete for [", _manifest.src.filename, "]");
- }
- auto t = tuple(doc_abstraction, doc_matters);
- return t;
- }
-}