diff options
Diffstat (limited to 'src/sisudoc/meta/conf_make_meta_structs.d')
-rw-r--r-- | src/sisudoc/meta/conf_make_meta_structs.d | 316 |
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 = `{ +}`; |