aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sisudoc/meta/conf_make_meta_structs.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/sisudoc/meta/conf_make_meta_structs.d')
-rw-r--r--src/sisudoc/meta/conf_make_meta_structs.d316
1 files changed, 316 insertions, 0 deletions
diff --git a/src/sisudoc/meta/conf_make_meta_structs.d b/src/sisudoc/meta/conf_make_meta_structs.d
new file mode 100644
index 0000000..5322220
--- /dev/null
+++ b/src/sisudoc/meta/conf_make_meta_structs.d
@@ -0,0 +1,316 @@
+/+
+- Name: SisuDoc 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 sisudoc.meta.conf_make_meta_structs;
+@safe:
+import
+ std.exception,
+ std.json,
+ std.path,
+ std.regex,
+ std.stdio,
+ std.string,
+ std.typecons,
+ std.utf,
+ std.conv : to;
+import
+ sisudoc.meta.defaults,
+ sisudoc.meta.rgx_yaml,
+ sisudoc.meta.rgx;
+mixin spineRgxIn;
+static auto rgx = RgxI();
+mixin spineRgxYamlTags;
+static auto rgx_y = RgxYaml();
+mixin InternalMarkup;
+static auto mkup = InlineMarkup();
+string url_markup(string line) {
+ string line_ = line
+ .replaceAll(
+ rgx.smid_inline_link_markup_regular,
+ ("$1"
+ ~ mkup.lnk_o ~ "$2" ~ mkup.lnk_c
+ ~ mkup.url_o ~ "$3" ~ mkup.url_c
+ ) // ("$1{ $2 }$3$4")
+ )
+ .replaceAll(
+ rgx.smid_inline_link_naked_url,
+ ("$1"
+ ~ mkup.lnk_o ~ "$2" ~ mkup.lnk_c
+ ~ mkup.url_o ~ "$2" ~ mkup.url_c
+ ) // ("$1{ $2 }$2$3")
+ )
+ .replaceAll(
+ rgx.arr_delimiter,
+ mkup.br_line
+ );
+ return line_;
+}
+struct ConfCompositeMakeStr {
+ string doc_type = "book"; // book, article
+ string breaks;
+ string bold;
+ string cover_image;
+ string css;
+ string emphasis;
+ string[] footer;
+ string[] headings;
+ string[] home_button_image;
+ string home_button_text = "┥Spine, Doc Reform┝┤https://www.doc-reform.org├"
+ ~ " ┥www.doc-reform.org┝┤https://www.doc-reform.org├"
+ ~ " ┥sources / git┝┤https://git.doc-reform.org/software/spine├";
+ string italics;
+ string auto_num_top_at_level;
+ int auto_num_top_lv = 9;
+ int auto_num_depth = 2;
+ string[][] substitute;
+ string texpdf_font;
+}
+@trusted struct confCompositeMakeBuild {
+ string[] bold(string _mk) {
+ string[] _out;
+ if (_mk) {
+ _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "*{$1}*", "<b>$1</b>"];
+ }
+ return _out;
+ }
+ string doc_type(string _mk) {
+ return _mk;
+ }
+ string breaks(string _mk) {
+ return _mk;
+ }
+ string cover_image(string _mk) {
+ return _mk;
+ }
+ string css(string _mk) {
+ return _mk;
+ }
+ string[] emphasis(string _mk) {
+ string[] _out;
+ if (_mk) {
+ _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "!{$1}!", "<em>$1</em>" ];
+ }
+ return _out;
+ }
+ string[] footer(string[] _mk) {
+ string line_;
+ string[] _mk2;
+ foreach (line; _mk) {
+ _mk2 ~= url_markup(line);
+ }
+ return _mk2;
+ }
+ string[] headings(string[] _mk) {
+ return _mk;
+ }
+ string[] home_button_image(string[] _mk) {
+ return _mk;
+ }
+ string home_button_text(string _mk) {
+ return url_markup(_mk);
+ }
+ string[] italics(string _mk) {
+ string[] _out;
+ if (_mk) {
+ _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "/{$1}/", "<i>$1</i>" ];
+ }
+ return _out;
+ }
+ string auto_num_top_at_level(string _mk) {
+ return _mk;
+ }
+ int auto_num_top_lv(int _mk) {
+ return _mk;
+ }
+ int auto_num_depth(int _mk) {
+ return _mk;
+ }
+ string[][] substitute(string[][] _mk) {
+ return _mk;
+ }
+ string texpdf_font(string _mk) {
+ return _mk;
+ }
+}
+struct ConfCompositeMakeInit {
+ string doc_type;
+ string breaks;
+ string cover_image;
+ string css;
+ string[] bold;
+ string[] emphasis;
+ string[] footer;
+ string[] headings;
+ string[] home_button_image;
+ string home_button_text = "┥Spine, Doc Reform┝┤https://www.doc-reform.org├"
+ ~ " ┥www.doc-reform.org┝┤https://www.doc-reform.org├"
+ ~ " ┥sources / git┝┤https://git.doc-reform.org/software/spine├";
+ string[] italics;
+ string auto_num_top_at_level;
+ int auto_num_top_lv = 9;
+ int auto_num_depth = 2;
+ string[][] substitute;
+ string texpdf_font;
+}
+struct ConfCompositeSiteLocal {
+ string w_srv_http;
+ string w_srv_host;
+ string w_srv_data_http; // if not set same as webserv_http
+ string w_srv_data_host; // if not set same as webserv_host
+ string w_srv_data_root_part;
+ string w_srv_data_root_url;
+ string w_srv_data_root_url_html;
+ string w_srv_data_root_path;
+ string w_srv_images_root_part;
+ // string w_srv_url_doc_path;
+ string w_srv_cgi_search_form_title;
+ string w_srv_cgi_http; // if not set same as webserv_http
+ string w_srv_cgi_host; // if not set same as webserv_host
+ string w_srv_cgi_bin_subpath;
+ string w_srv_cgi_bin_path;
+ string w_srv_cgi_search_script;
+ string w_srv_cgi_search_script_raw_fn_d;
+ string w_srv_cgi_port;
+ string w_srv_cgi_user;
+ string w_srv_cgi_action;
+ string w_srv_cgi_bin_url;
+ string w_srv_db_sqlite_filename;
+ string w_srv_db_sqlite_path;
+ // string w_srv_db_pg;
+ string w_srv_db_pg_table;
+ string w_srv_db_pg_user;
+ // string webserv_cgi_file_links;
+ string output_path;
+ string processing_path;
+ string processing_dir;
+ string processing_concord_max;
+ string flag_act0;
+ string flag_act1;
+ string flag_act2;
+ string flag_act3;
+ string flag_act4;
+ string flag_act5;
+ string flag_act6;
+ string flag_act7;
+ string flag_act8;
+ string flag_act9;
+ string[] set_papersize;
+ string set_text_wrap;
+ string set_emphasis;
+ string set_language;
+ string set_digest;
+ string permission_share_source;
+ string search_flag;
+ string search_action;
+ string search_db;
+ string search_title;
+}
+struct MetaComposite {
+ string classify_dewey;
+ string classify_keywords;
+ string classify_loc;
+ string classify_subject;
+ string classify_topic_register;
+ string[] classify_topic_register_arr;
+ string[] classify_topic_register_expanded_arr; // experimental use in sqlite topics table
+ string[] creator_author_arr;
+ string creator_author;
+ string creator_author_surname_fn;
+ string creator_author_surname;
+ string creator_author_email;
+ string creator_illustrator;
+ string creator_translator;
+ string date_added_to_site;
+ string date_available;
+ string date_created;
+ string date_issued;
+ string date_modified;
+ string date_published;
+ string date_valid;
+ string identifier_isbn;
+ string identifier_oclc;
+ string identifier_pg;
+ string language_document;
+ string language_document_char;
+ string links;
+ string notes_abstract;
+ string notes_description;
+ string notes_summary;
+ string original_language;
+ string original_language_char;
+ string original_publisher;
+ string original_source;
+ string original_title;
+ string publisher;
+ string rights_copyright;
+ string rights_copyright_audio;
+ string rights_copyright_cover;
+ string rights_copyright_illustrations;
+ string rights_copyright_photographs;
+ string rights_copyright_text;
+ string rights_copyright_translation;
+ string rights_copyright_video;
+ string rights_license;
+ string title_edition;
+ string title_full;
+ string title_language;
+ string title_main;
+ string title_note;
+ string title_short;
+ string title_sub;
+ string title_subtitle;
+}
+struct ConfComposite {
+ MetaComposite meta;
+ ConfCompositeMakeInit make;
+ ConfCompositeMakeStr make_str;
+ ConfCompositeSiteLocal conf;
+}
+JSONValue config_jsonstr = `{
+}`;