module doc_reform.meta.conf_make_meta_structs; import std.exception, std.json, std.regex, std.stdio, std.string, std.traits, std.typecons, std.utf, std.conv : to; import doc_reform.meta.defaults, doc_reform.meta.rgx; mixin DocReformRgxInit; static auto _rgx = Rgx(); mixin InternalMarkup; auto _mkup = InlineMarkup(); auto url_markup(string line) { auto 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 bold; string breaks; string cover_image; string css; string emphasis; string[] footer; string[] headings; string[] home_button_image; string home_button_text = "{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"; 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 { auto bold(string _mk) { string[] _out; if (_mk) { _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "*{$1}*", "$1"]; } return _out; } auto breaks(string _mk) { return _mk; } auto cover_image(string _mk) { return _mk; } auto css(string _mk) { return _mk; } auto emphasis(string _mk) { string[] _out; if (_mk) { _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "!{$1}!", "$1" ]; } return _out; } auto footer(string[] _mk) { string line_; string[] _mk2; foreach (line; _mk) { _mk2 ~= url_markup(line); } return _mk2; } auto headings(string[] _mk) { return _mk; } auto home_button_image(string[] _mk) { return _mk; } auto home_button_text(string _mk) { return url_markup(_mk); } auto italics(string _mk) { string[] _out; if (_mk) { _out = [ (cast(string) (`(` ~ _mk.dup ~ `)`)), "/{$1}/", "$1" ]; } return _out; } auto auto_num_top_at_level(string _mk) { return _mk; } auto auto_num_top_lv(int _mk) { return _mk; } auto auto_num_depth(int _mk) { return _mk; } auto substitute(string[][] _mk) { return _mk; } auto texpdf_font(string _mk) { return _mk; } } struct ConfCompositeMakeInit { string[] bold; string breaks; string cover_image; string css; string[] emphasis; string[] footer; string[] headings; string[] home_button_image; string home_button_text = "{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"; 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 webserv_url_doc_root; string webserv_url_domain; string webserv_url_doc_path; string webserv_images; string webserv_cgi; string webserv_cgi_host; string webserv_cgi_host_path; string webserv_cgi_port; string webserv_cgi_user; string webserv_cgi_file_links; 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 default_papersize; string default_text_wrap; string default_emphasis; string default_language; string default_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 creator_author; 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 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; ConfCompositeSiteLocal conf; } struct ConfCompositePlus { MetaComposite meta; ConfCompositeMakeInit make; ConfCompositeMakeStr make_str; ConfCompositeSiteLocal conf; } static auto ptr_head_main = [ "classify", "creator", "date", "identifier", "links", "make", "original", "notes", "rights", "title" ]; static auto ptr_head_sub_classify = [ "dewey", "keywords", "loc", "subject", "topic_register" ]; static auto ptr_head_sub_creator = [ "author", "author_email", "cover", "illustrator", "translator" ]; static auto ptr_head_sub_date = [ "added_to_site", "available", "created", "issued", "modified", "published", "valid" ]; static auto ptr_head_sub_identifier = [ "isbn", "oclc", "pg" ]; /+ make +/ static auto ptr_head_sub_make = [ "cover_image", "home_button_image", "home_button_text", "footer", "headings", "auto_num_top_at_level", "auto_num_top_lv", "auto_num_depth", "breaks", "substitute", "bold", "italics", "emphasis", "texpdf_font", "css" ]; static auto ptr_head_sub_notes = [ "abstract", "description" ]; static auto ptr_head_sub_original = [ "language", "source", "title" ]; static auto ptr_head_sub_publisher = [ "name" ]; static auto ptr_head_sub_rights = [ "copyright", "cover", "illustrations", "license" ]; static auto ptr_head_sub_title = [ "edition", "full", "language", "main", "note", "sub" ]; auto config_jsonstr = `{ }`;