/+ - 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 - 2023 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.doc_reform.org] [https://www.sisudoc.org] - Git [https://git.sisudoc.org/projects/?p=software/spine.git;a=summary] +/ module doc_reform.meta.conf_make_meta_structs; import std.exception, std.json, std.path, std.regex, std.stdio, std.string, std.typecons, std.utf, std.conv : to; import doc_reform.meta.defaults, doc_reform.meta.rgx_yaml, doc_reform.meta.rgx; mixin spineRgxIn; static auto rgx = RgxI(); mixin spineRgxYamlTags; static auto rgx_y = RgxYaml(); mixin InternalMarkup; static auto mkup = InlineMarkup(); @safe 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; } struct confCompositeMakeBuild { string[] bold(string _mk) { string[] _out; if (_mk) { _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "*{$1}*", "$1"]; } 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}!", "$1" ]; } 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}/", "$1" ]; } 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 = `{ }`;