diff options
Diffstat (limited to 'src/sdp/meta')
-rw-r--r-- | src/sdp/meta/conf_make_meta_sdlang.d | 474 | ||||
-rw-r--r-- | src/sdp/meta/doc_debugs.d | 14 | ||||
-rw-r--r-- | src/sdp/meta/metadoc.d | 8 | ||||
-rw-r--r-- | src/sdp/meta/read_config_files.d | 226 | ||||
-rw-r--r-- | src/sdp/meta/read_source_files.d | 354 |
5 files changed, 11 insertions, 1065 deletions
diff --git a/src/sdp/meta/conf_make_meta_sdlang.d b/src/sdp/meta/conf_make_meta_sdlang.d deleted file mode 100644 index 4ebe960..0000000 --- a/src/sdp/meta/conf_make_meta_sdlang.d +++ /dev/null @@ -1,474 +0,0 @@ -/++ - extract native/orig header return associative array<BR> - - the header is passed as text (lopped off top of a sisu markup file until the - required first heading ^A~), determine whether is a native header or sdlang one - with a regex check if whether it contains the "native header" required tag/field - @title: then process accordingly as a "native header" or "sdlang header" - converting the metadata and make instructions to a common json format used by - program internally. Moved to associative array. -+/ -module sdp.meta.conf_make_meta_sdlang; -static template docHeaderMakeAndMetaTupSDLangExtractAndConvertToStruct() { - import - std.exception, - std.regex, - std.stdio, - std.traits, - std.typecons, - std.utf, - std.conv : to; - import sdlang; - import - sdp.meta.conf_make_meta_sdlang, - sdp.meta.rgx; - mixin SiSUrgxInit; - mixin SiSUextractSDLang; - static auto rgx = Rgx(); - auto docHeaderMakeAndMetaTupSDLangExtractAndConvertToStruct(CCm, Src)( - CCm conf_composite_make, - Src header_src, - ) { - auto header_sdlang_tag = (header_src.match(rgx.sdlang_header_meta_title)) - ? extractSDL().docHeaderSDLtagGet(header_src) // sdlang.ast.Tag - : null; - auto header_make_and_meta_struct = extractSDL().docSDLtoStruct(conf_composite_make, header_sdlang_tag); - return header_make_and_meta_struct; - } -} -/++ - sdlang headers<BR> - extract sdlang header return sdlang -+/ -static template SiSUextractSDLang() { - import - std.exception, - std.regex, - std.stdio, - std.string, - std.traits, - std.typecons, - std.utf, - std.conv : to; - import - sdp.meta.conf_make_meta_structs, - sdp.meta.rgx; - struct extractSDL { - mixin SiSUmakeMetaStructsSDLang; - mixin SiSUrgxInit; - static auto rgx = Rgx(); - private auto docHeaderSDLtagGet(Hs)(Hs src_header) { - debug(asserts){ - static assert(is(typeof(src_header) == char[])); - } - char[][] source_header_arr - = (cast(char[]) src_header).split(rgx.newline_eol_delimiter); - char[] _src_header; - foreach(header_line; source_header_arr) { - if (!match(header_line, rgx.comments)) { - _src_header ~= header_line ~ "\n"; - } - } - scope(failure) { - stderr.writefln( - "%s\n%s\n%s:%s failed here:\n _src_header: %s", - __MODULE__, __FUNCTION__, - __FILE__, __LINE__, - _src_header, - ); - } - Tag sdl_root_header; - try { - sdl_root_header = parseSource(_src_header.to!string); - } - catch(ParseException e) { - stderr.writeln("SDLang problem with this document header:"); - stderr.writeln(_src_header); - // Error messages of the form: - // myFile.sdl(5:28): Error: Invalid integer suffix. - stderr.writeln(e.msg); - } - debug(sdlang) { - writeln("header SDL:"); - writeln(__LINE__, ": ", sdl_root_header.toSDLDocument()); - writeln(__LINE__, ": ", sdl_root_header.maybe.namespaces); - writeln("header make sdlang: ", sdl_root_header.toSDLDocument()); - writeln(__LINE__, ": ", sdl_root_header.getTagValues("title")); - writeln(__LINE__, ": ", sdl_root_header.getTagValues("creator")); - Tag creator = sdl_root_header.getTag("creator"); - if (creator !is null) { - if ("author" in creator.maybe.tags) { - writeln(__LINE__, ": ", creator.getTagValues("author")); - } else if ("author" in creator.maybe.attributes) { - writeln(__LINE__, ": ", creator.maybe.attributes["author"][0].value); - } - } - } - return sdl_root_header; // sdlang.ast.Tag - } - private auto docSDLtoStruct(C,Tag)(C _conf_composite, Tag header_sdlang) { // work on - /+ make ------------------------------------------------------------------- +/ - if ("make" in header_sdlang.maybe.tags) { - confCompositeMakeBuild _mk; - _conf_composite.make_str.bold = extractSDLangTabOrAttrib(header_sdlang, "make", "bold"); // TODO - _conf_composite.make_str.breaks = extractSDLangTabOrAttrib(header_sdlang, "make", "breaks"); - _conf_composite.make_str.cover_image = extractSDLangTabOrAttrib(header_sdlang, "make", "cover_image"); - _conf_composite.make_str.css = extractSDLangTabOrAttrib(header_sdlang, "make", "css"); - _conf_composite.make_str.emphasis = extractSDLangTabOrAttrib(header_sdlang, "make", "emphasis"); // TODO - _conf_composite.make_str.footer = extractSDLangTabOrAttrib(header_sdlang, "make", "footer"); - _conf_composite.make_str.headings = extractSDLangTabOrAttrib(header_sdlang, "make", "headings"); - _conf_composite.make_str.home_button_image = extractSDLangTabOrAttrib(header_sdlang, "make", "home_button_image"); - _conf_composite.make_str.home_button_text = extractSDLangTabOrAttrib(header_sdlang, "make", "home_button_text"); - _conf_composite.make_str.italics = extractSDLangTabOrAttrib(header_sdlang, "make", "italics"); // TODO - _conf_composite.make_str.num_top = extractSDLangTabOrAttrib(header_sdlang, "make", "num_top"); - _conf_composite.make_str.num_depth = extractSDLangTabOrAttrib(header_sdlang, "make", "num_depth"); - _conf_composite.make_str.substitute = extractSDLangTabOrAttrib(header_sdlang, "make", "substitute"); // TODO - _conf_composite.make_str.texpdf_font = extractSDLangTabOrAttrib(header_sdlang, "make", "texpdf_font"); - _conf_composite.make.bold_rgxmatch = _mk.bold_rgxmatch(_conf_composite.make_str.bold); - _conf_composite.make.breaks = _mk.breaks(_conf_composite.make_str.breaks); - _conf_composite.make.cover_image = _mk.cover_image(_conf_composite.make_str.cover_image); - _conf_composite.make.css = _mk.css(_conf_composite.make_str.css); - _conf_composite.make.emphasis_rgxmatch = _mk.emphasis_rgxmatch(_conf_composite.make_str.emphasis); - _conf_composite.make.footer = _mk.footer(_conf_composite.make_str.footer); - _conf_composite.make.headings = _mk.headings(_conf_composite.make_str.headings); - _conf_composite.make.home_button_image = _mk.home_button_image(_conf_composite.make_str.home_button_image); - _conf_composite.make.home_button_text = _mk.home_button_text(_conf_composite.make_str.home_button_text); - _conf_composite.make.italics_rgxmatch = _mk.italics_rgxmatch(_conf_composite.make_str.italics); - _conf_composite.make.num_top = _mk.num_top(_conf_composite.make_str.num_top); - _conf_composite.make.num_depth = _mk.num_depth(_conf_composite.make_str.num_depth); - _conf_composite.make.substitute = _mk.substitute(_conf_composite.make_str.substitute); - _conf_composite.make.texpdf_font = _mk.texpdf_font(_conf_composite.make_str.texpdf_font); - } - /+ conf ------------------------------------------------------------------- +/ - if ("webserv" in header_sdlang.maybe.tags) { - _conf_composite.conf.webserv_url_root = extractSDLangTabOrAttrib(header_sdlang, "webserv", "url_root"); - _conf_composite.conf.webserv_path = extractSDLangTabOrAttrib(header_sdlang, "webserv", "path"); - _conf_composite.conf.webserv_images = extractSDLangTabOrAttrib(header_sdlang, "webserv", "images"); - _conf_composite.conf.webserv_cgi = extractSDLangTabOrAttrib(header_sdlang, "webserv", "cgi"); - _conf_composite.conf.webserv_cgi_host = extractSDLangTabOrAttrib(header_sdlang, "webserv", "cgi_host"); - _conf_composite.conf.webserv_cgi_host_path = extractSDLangTabOrAttrib(header_sdlang, "webserv", "cgi_host_path"); - _conf_composite.conf.webserv_cgi_port = extractSDLangTabOrAttrib(header_sdlang, "webserv", "cgi_port"); - _conf_composite.conf.webserv_cgi_user = extractSDLangTabOrAttrib(header_sdlang, "webserv", "cgi_user"); - _conf_composite.conf.webserv_cgi_file_links = extractSDLangTabOrAttrib(header_sdlang, "webserv", "cgi_file_links"); - } - if ("processing" in header_sdlang.maybe.tags) { - _conf_composite.conf.processing_path = extractSDLangTabOrAttrib(header_sdlang, "webserv", "processing_path"); - _conf_composite.conf.processing_dir = extractSDLangTabOrAttrib(header_sdlang, "webserv", "processing_dir"); - _conf_composite.conf.processing_concord_max = extractSDLangTabOrAttrib(header_sdlang, "webserv", "processing_concord_max"); - } - if ("flag" in header_sdlang.maybe.tags) { - _conf_composite.conf.flag_act0 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act0"); - _conf_composite.conf.flag_act1 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act1"); - _conf_composite.conf.flag_act2 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act2"); - _conf_composite.conf.flag_act3 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act3"); - _conf_composite.conf.flag_act4 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act4"); - _conf_composite.conf.flag_act5 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act5"); - _conf_composite.conf.flag_act6 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act6"); - _conf_composite.conf.flag_act7 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act7"); - _conf_composite.conf.flag_act8 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act8"); - _conf_composite.conf.flag_act9 = extractSDLangTabOrAttrib(header_sdlang, "flag", "act9"); - } - if ("default" in header_sdlang.maybe.tags) { - _conf_composite.conf.default_papersize = extractSDLangTabOrAttrib(header_sdlang, "default", "papersize"); - _conf_composite.conf.default_text_wrap = extractSDLangTabOrAttrib(header_sdlang, "default", "text_wrap"); - _conf_composite.conf.default_emphasis = extractSDLangTabOrAttrib(header_sdlang, "default", "emphasis"); - _conf_composite.conf.default_language = extractSDLangTabOrAttrib(header_sdlang, "default", "language"); - _conf_composite.conf.default_digest = extractSDLangTabOrAttrib(header_sdlang, "default", "digest"); - } - if ("search" in header_sdlang.maybe.tags) { - _conf_composite.conf.search_flag = extractSDLangTabOrAttrib(header_sdlang, "search", "flag"); - _conf_composite.conf.search_action = extractSDLangTabOrAttrib(header_sdlang, "search", "action"); - _conf_composite.conf.search_db = extractSDLangTabOrAttrib(header_sdlang, "search", "db"); - _conf_composite.conf.search_title = extractSDLangTabOrAttrib(header_sdlang, "search", "title"); - } - /+ meta ------------------------------------------------------------------- +/ - if ("classify" in header_sdlang.maybe.tags) { - _conf_composite.meta.classify_dewey = extractSDLangTabOrAttrib(header_sdlang, "classify", "dewey"); - _conf_composite.meta.classify_keywords = extractSDLangTabOrAttrib(header_sdlang, "classify", "keywords"); - _conf_composite.meta.classify_loc = extractSDLangTabOrAttrib(header_sdlang, "classify", "loc"); - _conf_composite.meta.classify_subject = extractSDLangTabOrAttrib(header_sdlang, "classify", "subject"); - _conf_composite.meta.classify_topic_register = extractSDLangTabOrAttrib(header_sdlang, "classify", "topic_register"); - } - if ("date" in header_sdlang.maybe.tags) { - _conf_composite.meta.date_added_to_site = extractSDLangTabOrAttrib(header_sdlang, "date", "added_to_site"); - _conf_composite.meta.date_available = extractSDLangTabOrAttrib(header_sdlang, "date", "available"); - _conf_composite.meta.date_created = extractSDLangTabOrAttrib(header_sdlang, "date", "created"); - _conf_composite.meta.date_issued = extractSDLangTabOrAttrib(header_sdlang, "date", "issued"); - _conf_composite.meta.date_modified = extractSDLangTabOrAttrib(header_sdlang, "date", "modified"); - _conf_composite.meta.date_published = extractSDLangTabOrAttrib(header_sdlang, "date", "published"); - _conf_composite.meta.date_valid = extractSDLangTabOrAttrib(header_sdlang, "date", "valid"); - } - if ("identifier" in header_sdlang.maybe.tags) { - _conf_composite.meta.identifier_isbn = extractSDLangTabOrAttrib(header_sdlang, "identifier", "isbn"); - _conf_composite.meta.identifier_oclc = extractSDLangTabOrAttrib(header_sdlang, "identifier", "oclc"); - _conf_composite.meta.identifier_pg = extractSDLangTabOrAttrib(header_sdlang, "identifier", "pg"); - } - if ("links" in header_sdlang.maybe.tags) { - // _conf_composite.meta.links = extractSDLangTabOrAttrib(header_sdlang, "links", ""); - } - if ("notes" in header_sdlang.maybe.tags) { - _conf_composite.meta.notes_abstract = extractSDLangTabOrAttrib(header_sdlang, "notes", "abstract"); - _conf_composite.meta.notes_description = extractSDLangTabOrAttrib(header_sdlang, "notes", "description"); - } - if ("original" in header_sdlang.maybe.tags) { - _conf_composite.meta.original_language = extractSDLangTabOrAttrib(header_sdlang, "original", "language"); - _conf_composite.meta.original_language_char = extractSDLangTabOrAttrib(header_sdlang, "original", "language_char"); - _conf_composite.meta.original_source = extractSDLangTabOrAttrib(header_sdlang, "original", "source"); - _conf_composite.meta.original_title = extractSDLangTabOrAttrib(header_sdlang, "original", "title"); - } - if ("publisher" in header_sdlang.maybe.tags) { - // _conf_composite.meta.publisher = extractSDLangTabOrAttrib(header_sdlang, "publisher", ""); - } - if ("rights" in header_sdlang.maybe.tags) { - _conf_composite.meta.rights_copyright = extractSDLangTabOrAttrib(header_sdlang, "rights", "copyright"); - _conf_composite.meta.rights_copyright_text = extractSDLangTabOrAttrib(header_sdlang, "rights", "copyright_text"); - _conf_composite.meta.rights_copyright_audio = extractSDLangTabOrAttrib(header_sdlang, "rights", "copyright_audio"); - _conf_composite.meta.rights_copyright_cover = extractSDLangTabOrAttrib(header_sdlang, "rights", "copyright_cover"); - _conf_composite.meta.rights_copyright_illustrations = extractSDLangTabOrAttrib(header_sdlang, "rights", "copyright_illustrations"); - _conf_composite.meta.rights_copyright_photographs = extractSDLangTabOrAttrib(header_sdlang, "rights", "copyright_photographs"); - _conf_composite.meta.rights_copyright_translation = extractSDLangTabOrAttrib(header_sdlang, "rights", "copyright_translation"); - _conf_composite.meta.rights_copyright_video = extractSDLangTabOrAttrib(header_sdlang, "rights", "copyright_video"); - _conf_composite.meta.rights_license = extractSDLangTabOrAttrib(header_sdlang, "rights", "license"); - } - if (_conf_composite.meta.creator_author.empty) { - if ("creator" in header_sdlang.maybe.tags) { - _conf_composite.meta.creator_author = extractSDLangTabOrAttrib(header_sdlang, "creator", "author"); - _conf_composite.meta.creator_author_email = extractSDLangTabOrAttrib(header_sdlang, "creator", "author_email"); - _conf_composite.meta.creator_illustrator = extractSDLangTabOrAttrib(header_sdlang, "creator", "illustrator"); - _conf_composite.meta.creator_translator = extractSDLangTabOrAttrib(header_sdlang, "creator", "translator"); - } - // dochead_meta["creator"]["author_raw"] = dochead_meta["creator"]["author"]; - string[] authors_arr; - auto authors_raw_arr = _conf_composite.meta.creator_author.split(rgx.arr_delimiter); - foreach (author_raw; authors_raw_arr) { - authors_arr ~= author_raw.replace(rgx.raw_author_munge, "$2 $1"); - } - _conf_composite.meta.creator_author = join(authors_arr, ", ").chomp.chomp; - } - if (_conf_composite.meta.title_main.empty) { - if ("title" in header_sdlang.maybe.tags) { - _conf_composite.meta.title_edition = extractSDLangTabOrAttrib(header_sdlang, "title", "edition"); - // _conf_composite.meta.title_full = extractSDLangTabOrAttrib(header_sdlang, "title", "full"); - _conf_composite.meta.title_language = extractSDLangTabOrAttrib(header_sdlang, "title", "language"); - _conf_composite.meta.title_main = extractSDLangTabOrAttrib(header_sdlang, "title", "main"); - _conf_composite.meta.title_note = extractSDLangTabOrAttrib(header_sdlang, "title", "note"); - _conf_composite.meta.title_sub = extractSDLangTabOrAttrib(header_sdlang, "title", "sub"); - _conf_composite.meta.title_subtitle = extractSDLangTabOrAttrib(header_sdlang, "title", "subtitle"); - } - if (_conf_composite.meta.title_main.empty) { - Tag _maintag = header_sdlang.getTag("title"); - if (_maintag !is null) { - if ("main" in _maintag.maybe.tags) { - _conf_composite.meta.title_main - = to!string(_maintag.getTagValues("main")); - } else if ("main" !in _maintag.maybe.attributes) { - _conf_composite.meta.title_main - = (_maintag.values[0]).to!string; // test that this exists - } - } - } - if ((!(_conf_composite.meta.title_subtitle.empty)) - && (_conf_composite.meta.title_sub.empty)) { - _conf_composite.meta.title_sub = _conf_composite.meta.title_subtitle; - } - _conf_composite.meta.title_full = (_conf_composite.meta.title_sub.empty) - ? _conf_composite.meta.title_main - : format( - "%s - %s", - _conf_composite.meta.title_main, - _conf_composite.meta.title_sub, - ); - } - return _conf_composite; - } - } -} -static template parseSDLangConfig() { - import - std.exception, - std.regex, - std.stdio, - std.string, - std.traits, - std.typecons, - std.utf, - std.conv : to; - import sdlang; - auto parseSDLangConfig(string configuration, string conf_sdl_filename) { - Tag sdl_root_conf; - try { - sdl_root_conf = parseSource(configuration); - } - catch(ParseException e) { - stderr.writeln("SDLang problem with content for ", conf_sdl_filename); - stderr.writeln(e.msg); - } - return sdl_root_conf; - } -} -/++ - return composite make from config files -+/ - -template confFilesSDLtoStruct() { - import - std.exception, - std.regex, - std.stdio, - std.string, - std.traits, - std.typecons, - std.utf, - std.conv : to; - import - sdp.meta.conf_make_meta_structs, - sdp.meta.rgx; - auto configParseSDL(T)( - T _text - ){ - Tag sdl_root; - try { - sdl_root = parseSource(_text.to!string); - } - catch(ParseException e) { - stderr.writeln("SDLang problem with this document header:"); - stderr.writeln(_src_header); - // Error messages of the form: - // myFile.sdl(5:28): Error: Invalid integer suffix. - stderr.writeln(e.msg); - } - debug(sdlang) { - writeln("header SDL:"); - writeln(__LINE__, ": ", sdl_root.toSDLDocument()); - writeln(__LINE__, ": ", sdl_root.maybe.namespaces); - writeln("header make sdlang: ", sdl_root.toSDLDocument()); - writeln(__LINE__, ": ", sdl_root.getTagValues("title")); - writeln(__LINE__, ": ", sdl_root.getTagValues("creator")); - Tag creator = sdl_root.getTag("creator"); - if (creator !is null) { - if ("author" in creator.maybe.tags) { - writeln(__LINE__, ": ", creator.getTagValues("author")); - } else if ("author" in creator.maybe.attributes) { - writeln(__LINE__, ": ", creator.maybe.attributes["author"][0].value); - } - } - } - return sdl_root; // sdlang.ast.Tag - } - auto confFilesSDLtoStruct(S,L)( - S sdl_root_config_share, - L sdl_root_config_local, - ){ - mixin SiSUmakeMetaStructsSDLang; - ConfCompositePlus _conf_composite; - foreach (conf_sdlang; [sdl_root_config_share, sdl_root_config_local]) { - if ("make" in conf_sdlang.maybe.tags) { - confCompositeMakeBuild _mk; - _conf_composite.make_str.bold = extractSDLangTabOrAttrib(conf_sdlang, "make", "bold"); // TODO - _conf_composite.make_str.breaks = extractSDLangTabOrAttrib(conf_sdlang, "make", "breaks"); - _conf_composite.make_str.cover_image = extractSDLangTabOrAttrib(conf_sdlang, "make", "cover_image"); - _conf_composite.make_str.css = extractSDLangTabOrAttrib(conf_sdlang, "make", "css"); - _conf_composite.make_str.emphasis = extractSDLangTabOrAttrib(conf_sdlang, "make", "emphasis"); // TODO - _conf_composite.make_str.footer = extractSDLangTabOrAttrib(conf_sdlang, "make", "footer"); - _conf_composite.make_str.headings = extractSDLangTabOrAttrib(conf_sdlang, "make", "headings"); - _conf_composite.make_str.home_button_image = extractSDLangTabOrAttrib(conf_sdlang, "make", "home_button_image"); - _conf_composite.make_str.home_button_text = extractSDLangTabOrAttrib(conf_sdlang, "make", "home_button_text"); - _conf_composite.make_str.italics = extractSDLangTabOrAttrib(conf_sdlang, "make", "italics"); // TODO - _conf_composite.make_str.num_top = extractSDLangTabOrAttrib(conf_sdlang, "make", "num_top"); - _conf_composite.make_str.num_depth = extractSDLangTabOrAttrib(conf_sdlang, "make", "num_depth"); - _conf_composite.make_str.substitute = extractSDLangTabOrAttrib(conf_sdlang, "make", "substitute"); // TODO - _conf_composite.make_str.texpdf_font = extractSDLangTabOrAttrib(conf_sdlang, "make", "texpdf_font"); - _conf_composite.make.bold_rgxmatch = _mk.bold_rgxmatch(_conf_composite.make_str.bold); // - _conf_composite.make.breaks = _mk.breaks(_conf_composite.make_str.breaks); - _conf_composite.make.cover_image = _mk.cover_image(_conf_composite.make_str.cover_image); - _conf_composite.make.css = _mk.css(_conf_composite.make_str.css); - _conf_composite.make.emphasis_rgxmatch = _mk.emphasis_rgxmatch(_conf_composite.make_str.emphasis); - _conf_composite.make.footer = _mk.footer(_conf_composite.make_str.footer); - _conf_composite.make.headings = _mk.headings(_conf_composite.make_str.headings); - _conf_composite.make.home_button_image = _mk.home_button_image(_conf_composite.make_str.home_button_image); - _conf_composite.make.home_button_text = _mk.home_button_text(_conf_composite.make_str.home_button_text); - _conf_composite.make.italics_rgxmatch = _mk.italics_rgxmatch(_conf_composite.make_str.italics); - _conf_composite.make.num_top = _mk.num_top(_conf_composite.make_str.num_top); - _conf_composite.make.num_depth = _mk.num_depth(_conf_composite.make_str.num_depth); - _conf_composite.make.substitute = _mk.substitute(_conf_composite.make_str.substitute); // TODO - _conf_composite.make.texpdf_font = _mk.texpdf_font(_conf_composite.make_str.texpdf_font); - } - } - return _conf_composite; - } -} -/++ - default settings -+/ -template SiSUmakeMetaStructsSDLang() { - import - std.algorithm, - std.array, - std.container, - std.exception, - std.file, - std.getopt, - std.json, - std.path, - std.process, - std.range, - std.regex, - std.stdio, - std.string, - std.traits, - std.typecons, - std.uni, - std.utf, - std.conv : to; - import sdp.meta.conf_make_meta_structs; - string extractSDLangTabOrAttrib(S)( - S conf_sdlang, - string maintab, - string atab - ) { - string _conf_composite_string = ""; - if (maintab in conf_sdlang.maybe.tags) { - auto _maintag = conf_sdlang.getTag(maintab); - if ( - (atab in _maintag.maybe.tags) - && (_maintag.getTagValues(atab).length > 0) - ) { - debug(configsdlang) { - writeln( - " ", __LINE__, - ": sdl tag, ", - maintab, ":", atab, ": ", - _maintag.getTagValues(atab)[0] - ); - } - if (_maintag.getTagValues(atab).length == 1) { - writeln((_maintag.getTagValues(atab)[0]).to!string); - _conf_composite_string - = (_maintag.getTagValues(atab)[0]).to!string; - } else if (_maintag.getTagValues(atab).length > 1) { - string _tmp = ""; - foreach (st; _maintag.getTagValues(atab)) { - writeln(st.to!string, ";"); - _tmp ~= st.to!string ~ ";"; - } - _conf_composite_string = _tmp; - } - } else if ( - (atab in _maintag.maybe.attributes) - && (_maintag.attributes[atab][0].value.length > 0) - ) { - debug(configsdlang) { - writeln( - " ", __LINE__, - ": sdl attrib, ", - maintab, ":", atab, ": ", - _maintag.attributes[atab][0].value - ); - } - _conf_composite_string - = (_maintag.attributes[atab][0].value).to!string; - } - } - return _conf_composite_string; - } -} diff --git a/src/sdp/meta/doc_debugs.d b/src/sdp/meta/doc_debugs.d index 89ca3a7..66b5f0e 100644 --- a/src/sdp/meta/doc_debugs.d +++ b/src/sdp/meta/doc_debugs.d @@ -23,8 +23,8 @@ template SiSUdebugs() { std.utf, std.conv : to; auto SiSUdebugs(S,T)( - auto return ref const S contents, - auto return ref T doc_matters, + const S contents, + T doc_matters, ) { mixin SiSUrgxInit; mixin InternalMarkup; @@ -595,8 +595,8 @@ template SiSUdebugs() { } debug(checkdoc) { void out_segnames(S,T)( - auto return ref const S contents, - auto return ref T doc_matters, + const S contents, + T doc_matters, ) { foreach (key; doc_matters.xml.keys_seq.seg) { if (contents[key].length > 1) { @@ -611,7 +611,7 @@ template SiSUdebugs() { } debug(checkdoc) { void out_toc(S)( - auto return ref const S contents, + const S contents, string key, ) { if (contents[key].length > 1) { @@ -629,7 +629,7 @@ template SiSUdebugs() { } debug(checkdoc) { void out_endnotes(S)( - auto return ref const S contents, + const S contents, string key, ) { if (contents[key].length > 1) { @@ -645,7 +645,7 @@ template SiSUdebugs() { } debug(checkdoc) { void out_bookindex(S)( - auto return ref const S contents, + const S contents, string key, ) { if (contents[key].length > 1) { diff --git a/src/sdp/meta/metadoc.d b/src/sdp/meta/metadoc.d index 8160010..29af49c 100644 --- a/src/sdp/meta/metadoc.d +++ b/src/sdp/meta/metadoc.d @@ -14,11 +14,11 @@ template SiSUabstraction() { sdp.meta.conf_make_meta_json, sdp.meta.defaults, sdp.meta.doc_debugs, - sdp.meta.read_config_files, - sdp.meta.read_source_files, sdp.meta.rgx, - sdp.output.hub, - sdp.output.paths_source; + sdp.source.paths_source, + sdp.source.read_config_files, + sdp.source.read_source_files, + sdp.output.hub; mixin SiSUrgxInit; mixin contentJSONtoSiSUstruct; mixin SiSUbiblio; diff --git a/src/sdp/meta/read_config_files.d b/src/sdp/meta/read_config_files.d deleted file mode 100644 index 22d285f..0000000 --- a/src/sdp/meta/read_config_files.d +++ /dev/null @@ -1,226 +0,0 @@ -/++ - read configuration files<BR> - - read config files<BR> - meta_config_files.d -+/ -module sdp.meta.read_config_files; -static template configReadInSiteTOML() { - import - sdp.meta, - sdp.output.paths_source, - std.file, - std.path; - final string configReadInSiteTOML(M,E)(M manifest, E env) { - auto conf_file_details = ConfigFilePaths!()(manifest, env); - string conf_toml = conf_file_details.config_filename_site_toml; - auto possible_config_path_locations = conf_file_details.possible_config_path_locations.config_local_site; - string config_file_str; - debug(io) { - writeln("WARNING (io debug) in config filename: ", conf_toml); - writeln("WARNING (io debug) in config possible path locations: ", possible_config_path_locations); - } - foreach(pth; possible_config_path_locations) { - auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_toml)).array; - if (config_file_str.length > 0) { - break; - } - try { - if (exists(conf_file)) { - debug(io) { - writeln("WARNING (io debug) in config file found: ", conf_file); - } - config_file_str = conf_file.readText; - break; - } - } - catch (ErrnoException ex) { - } - catch (FileException ex) { - } - } - return config_file_str; - } -} -static template configReadInDocTOML() { - import - sdp.meta, - sdp.output.paths_source, - std.file, - std.path; - final string configReadInDocTOML(M,E)(M manifest, E env) { - auto conf_file_details = ConfigFilePaths!()(manifest, env); - string conf_toml = conf_file_details.config_filename_document_toml; - auto possible_config_path_locations = conf_file_details.possible_config_path_locations.sisu_document_make; - string config_file_str; - debug(io) { - writeln("WARNING (io debug) in config filename: ", conf_toml); - writeln("WARNING (io debug) in config possible path locations: ", possible_config_path_locations); - } - foreach(pth; possible_config_path_locations) { - auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_toml)).array; - if (config_file_str.length > 0) { - break; - } - try { - if (exists(conf_file)) { - debug(io) { - writeln("WARNING (io debug) in config file found: ", conf_file); - } - config_file_str = conf_file.readText; - break; - } - } - catch (ErrnoException ex) { - } - catch (FileException ex) { - } - } - return config_file_str; - } -} -static template configTOML() { - import toml; // - import - sdp.meta, - sdp.output.paths_source, - std.file, - std.path; - auto configTOML(string configuration, string conf_toml_filename) { - TOMLDocument _toml_conf; - try { - _toml_conf = parseTOML(configuration); // parseTOML(cast(string)(configuration)); - } - catch(ErrnoException e) { - stderr.writeln("Toml problem with content for ", conf_toml_filename); - stderr.writeln(e.msg); - } - return _toml_conf; - } -} -static template readConfigSite() { - import - sdp.meta, - sdp.output.paths_source, - std.file, - std.path; - final auto readConfigSite(M,E)(M _manifest, E _env) { - string config_file_str; - string conf_filename = "NONE"; - auto _conf_file_details = ConfigFilePaths!()(_manifest, _env); - auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.config_local_site; - foreach(conf_fn; [_conf_file_details.config_filename_site_toml]) { - foreach(pth; possible_config_path_locations) { - auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array; - conf_filename = conf_fn; - if (config_file_str.length > 0) { - // conf_filename = conf_fn; - break; - } - try { - if (exists(conf_file)) { - debug(io) { - writeln("WARNING (io debug) in config file found: ", conf_file); - // writeln(__LINE__, ": found: ", conf_file, " in ", pth); - } - config_file_str = conf_file.readText; - break; - } - } catch (ErrnoException ex) { - } catch (FileException ex) { - } - } - if (config_file_str.length > 0) { break; } - } - struct _ConfContent { - string filename() { - return conf_filename; - } - string filetype() { - return conf_filename.extension.chompPrefix("."); - } - auto content() { - return config_file_str; - } - } - return _ConfContent(); - } -} -static template readConfigDoc() { - import - sdp.meta, - sdp.output.paths_source, - std.file, - std.path; - final auto readConfigDoc(M,E)(M _manifest, E _env) { - string config_file_str; - string conf_filename = "NONE"; - auto _conf_file_details = ConfigFilePaths!()(_manifest, _env); - auto possible_config_path_locations = _conf_file_details.possible_config_path_locations.sisu_document_make; - foreach(conf_fn; [_conf_file_details.config_filename_document_toml]) { - foreach(pth; possible_config_path_locations) { - auto conf_file = asNormalizedPath(chainPath(pth.to!string, conf_fn)).array; - conf_filename = conf_fn; - if (config_file_str.length > 0) { - // conf_filename = conf_fn; - break; - } - try { - if (exists(conf_file)) { - debug(io) { - writeln("WARNING (io debug) in config file found: ", conf_file); - } - config_file_str = conf_file.readText; - break; - } - } - catch (ErrnoException ex) { - } - catch (FileException ex) { - } - } - if (config_file_str.length > 0) { break; } - } - struct _ConfContent { - string filename() { - return conf_filename; - } - string filetype() { - return conf_filename.extension.chompPrefix("."); - } - auto content() { - return config_file_str; - } - } - return _ConfContent(); - } -} -static template configReadSiteTOML() { - import - sdp.meta, - sdp.output.paths_source, - std.file, - std.path; - import toml; - final auto configReadSiteTOML(M,E)(M _manifest, E _env) { - auto _configuration = configReadInSiteTOML!()(_manifest, _env); - auto _conf_file_details = ConfigFilePaths!()(_manifest, _env); - string _conf_toml = _conf_file_details.config_filename_site_toml; - auto _toml_conf = configTOML!()(_configuration, _conf_toml); - return _toml_conf; - } -} -static template configReadDocTOML() { - import - sdp.meta, - sdp.output.paths_source, - std.file, - std.path; - import toml; - final auto configReadDocTOML(M,E)(M _manifest, E _env) { - auto _configuration = configReadInDocTOML!()(_manifest, _env); - auto _conf_file_details = ConfigFilePaths!()(_manifest, _env); - string _conf_toml = _conf_file_details.config_filename_document_toml; - auto _toml_conf = configTOML!()(_configuration, _conf_toml); - return _toml_conf; - } -} diff --git a/src/sdp/meta/read_source_files.d b/src/sdp/meta/read_source_files.d deleted file mode 100644 index 135d8e8..0000000 --- a/src/sdp/meta/read_source_files.d +++ /dev/null @@ -1,354 +0,0 @@ -/++ - module meta_read_source_files;<BR> - - open markup files<BR> - - if master file scan for addional files to import/insert -+/ -module sdp.meta.read_source_files; -static template SiSUrawMarkupContent() { - import - sdp.meta.rgx; - import - sdp.meta, - sdp.output.paths_source, - std.file, - std.path; - mixin SiSUrgxInit; - static auto rgx = Rgx(); - string[] _images=[]; - auto _extract_images(S)(S content_block) { - string[] images_; - auto _content_block = content_block.to!string; - if (auto m = _content_block.matchAll(rgx.image)) { - images_ ~= m.captures[1].to!string; - } - return images_; - } - auto rawsrc = RawMarkupContent(); - auto SiSUrawMarkupContent(O,Fn)(O _opt_action, Fn fn_src) { - auto _0_header_1_body_content_2_insert_filelist_tuple - = rawsrc.sourceContentSplitIntoHeaderAndBody(_opt_action, rawsrc.sourceContent(fn_src), fn_src); - return _0_header_1_body_content_2_insert_filelist_tuple; - } - struct RawMarkupContent { - final sourceContent(in string fn_src) { - auto raw = MarkupRawUnit(); - auto source_txt_str - = raw.markupSourceReadIn(fn_src); - return source_txt_str; - } - final auto sourceContentSplitIntoHeaderAndBody(O)(O _opt_action, in string source_txt_str, in string fn_src="") { - auto raw = MarkupRawUnit(); - string[] insert_file_list; - string[] images_list; - auto t - = raw.markupSourceHeaderContentRawLineTupleArray(source_txt_str); - auto header_raw = t[0]; - auto sourcefile_body_content = t[1]; - if (fn_src.match(rgx.src_fn_master)) { // filename with path needed if master file (.ssm) not otherwise - auto ins = Inserts(); - auto tu - = ins.scan_master_src_for_insert_files_and_import_content(_opt_action, sourcefile_body_content, fn_src); - static assert(!isTypeTuple!(tu)); - sourcefile_body_content = tu[0]; - insert_file_list = tu[1].dup; - images_list = tu[2].dup; - } else if (_opt_action.source || _opt_action.sisupod) { - auto ins = Inserts(); - auto tu - = ins.scan_master_src_for_insert_files_and_import_content(_opt_action, sourcefile_body_content, fn_src); - static assert(!isTypeTuple!(tu)); - images_list = tu[2].dup; - } - t = tuple( - header_raw, - sourcefile_body_content, - insert_file_list, - images_list - ); - static assert(t.length==4); - return t; - } - } - struct MarkupRawUnit { - import std.file; - final private string readInMarkupSource(in char[] fn_src) { - enforce( - exists(fn_src)!=0, - "file not found: «" ~ - fn_src ~ "»" - ); - string source_txt_str; - try { - if (exists(fn_src)) { - debug(io) { - writeln("in src, markup source file found: ", fn_src); - } - source_txt_str = fn_src.readText; - } - } - catch (ErrnoException ex) { - } - catch (UTFException ex) { - // Handle validation errors - } - catch (FileException ex) { - // Handle errors - } - std.utf.validate(source_txt_str); - return source_txt_str; - } - final private char[][] header0Content1(in string src_text) { - /+ split string on _first_ match of "^:?A~\s" into [header, content] array/tuple +/ - char[][] header_and_content; - auto m = (cast(char[]) src_text).matchFirst(rgx.heading_a); - header_and_content ~= m.pre; - header_and_content ~= m.hit ~ m.post; - assert(header_and_content.length == 2, - "document markup is broken, header body split == " - ~ header_and_content.length.to!string - ~ "; (header / body array split should == 2 (split is on level A~))" - ); - return header_and_content; - } - final private char[][] markupSourceLineArray(in char[] src_text) { - char[][] source_line_arr - = (cast(char[]) src_text).split(rgx.newline_eol_strip_preceding); - return source_line_arr; - } - auto markupSourceReadIn(in string fn_src) { - static auto rgx = Rgx(); - enforce( - fn_src.match(rgx.src_pth_sst_or_ssm), - "not a sisu markup filename: «" ~ - fn_src ~ "»" - ); - auto source_txt_str = readInMarkupSource(fn_src); - return source_txt_str; - } - auto markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) { - string[] file_insert_list = []; - string[] images_list = []; - auto hc = header0Content1(source_txt_str); - auto header = hc[0]; - char[] source_txt = hc[1]; - auto source_line_arr = markupSourceLineArray(source_txt); - auto t = tuple( - header, - source_line_arr, - file_insert_list, - images_list - ); - return t; - } - final char[][] getInsertMarkupSourceContentRawLineArray( - in char[] fn_src_insert, - Regex!(char) rgx_file - ) { - enforce( - fn_src_insert.match(rgx_file), - "not a sisu markup filename: «" ~ - fn_src_insert ~ "»" - ); - auto source_txt_str = readInMarkupSource(fn_src_insert); - auto source_line_arr = markupSourceLineArray(source_txt_str); - return source_line_arr; - } - } - struct Inserts { - auto scan_subdoc_source(O)( - O _opt_action, - char[][] markup_sourcefile_insert_content, - string fn_src - ) { - mixin SiSUrgxInitFlags; - char[][] contents_insert; - auto type1 = flags_type_init; - auto fn_pth_full = fn_src.match(rgx.src_pth_sst_or_ssm); - auto markup_src_file_path = fn_pth_full.captures[1]; - foreach (line; markup_sourcefile_insert_content) { - if (type1["curly_code"] == 1) { - type1["header_make"] = 0; - type1["header_meta"] = 0; - if (line.matchFirst(rgx.block_curly_code_close)) { - type1["curly_code"] = 0; - } - contents_insert ~= line; - } else if (line.matchFirst(rgx.block_curly_code_open)) { - type1["curly_code"] = 1; - type1["header_make"] = 0; - type1["header_meta"] = 0; - contents_insert ~= line; - } else if (type1["tic_code"] == 1) { - type1["header_make"] = 0; - type1["header_meta"] = 0; - if (line.matchFirst(rgx.block_tic_close)) { - type1["tic_code"] = 0; - } - contents_insert ~= line; - } else if (line.matchFirst(rgx.block_tic_code_open)) { - type1["tic_code"] = 1; - type1["header_make"] = 0; - type1["header_meta"] = 0; - contents_insert ~= line; - } else if ( - (type1["header_make"] == 1) - && line.matchFirst(rgx.native_header_sub) - ) { - type1["header_make"] = 1; - type1["header_meta"] = 0; - } else if ( - (type1["header_meta"] == 1) - && line.matchFirst(rgx.native_header_sub) - ) { - type1["header_meta"] = 1; - type1["header_make"] = 0; - } else if (auto m = line.match(rgx.insert_src_fn_ssi_or_sst)) { - type1["header_make"] = 0; - type1["header_meta"] = 0; - auto insert_fn = m.captures[2]; - auto insert_sub_pth = m.captures[1]; - auto fn_src_insert - = chainPath(markup_src_file_path, insert_sub_pth ~ insert_fn).array; - auto raw = MarkupRawUnit(); - auto markup_sourcesubfile_insert_content - = raw.getInsertMarkupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts); - debug(insert_file) { - tell_l("red", line); - tell_l("red", fn_src_insert); - tell_l("fuchsia", "ERROR"); - writeln( - " length contents insert array: ", - markup_sourcesubfile_insert_content.length - ); - } - if (_opt_action.source || _opt_action.sisupod) { - _images ~= _extract_images(markup_sourcesubfile_insert_content); - } - auto ins = Inserts(); - /+ - - 1. load file - - 2. read lines - - 3. scan lines - - a. if filename insert, and insert filename - - repeat 1 - - b. else - - add line to new array; - - build image list, search for any image files to add to image list - +/ - } else { - type1["header_make"] = 0; - type1["header_meta"] = 0; - contents_insert ~= line; // images to extract for image list? - if (_opt_action.source || _opt_action.sisupod) { - auto _image_linelist = _extract_images(line); - if (_image_linelist.length > 0) { - _images ~= _image_linelist; - } - } - } - } // end src subdoc (inserts) loop - auto t = tuple( - contents_insert, - _images - ); - return t; - } - auto scan_master_src_for_insert_files_and_import_content(O)( - O _opt_action, - char[][] sourcefile_body_content, - string fn_src - ) { - import std.algorithm; - mixin SiSUrgxInitFlags; - char[][] contents; - auto type = flags_type_init; - auto fn_pth_full = fn_src.match(rgx.src_pth_sst_or_ssm); - auto markup_src_file_path = fn_pth_full.captures[1]; - char[][] contents_insert; - string[] _images =[]; - string[] insert_file_list =[]; - foreach (line; sourcefile_body_content) { - if (type["curly_code"] == 1) { - if (line.matchFirst(rgx.block_curly_code_close)) { - type["curly_code"] = 0; - } - contents ~= line; - } else if (line.matchFirst(rgx.block_curly_code_open)) { - type["curly_code"] = 1; - contents ~= line; - } else if (type["tic_code"] == 1) { - if (line.matchFirst(rgx.block_tic_close)) { - type["tic_code"] = 0; - } - contents ~= line; - } else if (line.matchFirst(rgx.block_tic_code_open)) { - type["tic_code"] = 1; - contents ~= line; - } else if (auto m = line.match(rgx.insert_src_fn_ssi_or_sst)) { - auto insert_fn = m.captures[2]; - auto insert_sub_pth = m.captures[1]; - auto fn_src_insert - = chainPath(markup_src_file_path, insert_sub_pth ~ insert_fn).array; - insert_file_list ~= fn_src_insert.to!string; - auto raw = MarkupRawUnit(); - /+ TODO +/ - auto markup_sourcefile_insert_content - = raw.getInsertMarkupSourceContentRawLineArray(fn_src_insert, rgx.src_fn_find_inserts); - debug(insert_file) { - tell_l("red", line); - tell_l("red", fn_src_insert); - writeln( - " length contents insert array: ", - markup_sourcefile_insert_content.length - ); - } - auto ins = Inserts(); - auto contents_insert_tu = ins.scan_subdoc_source( - _opt_action, - markup_sourcefile_insert_content, - fn_src_insert.to!string - ); - contents ~= contents_insert_tu[0]; // images to extract for image list? - if (_opt_action.source || _opt_action.sisupod) { - auto _image_linelist = _extract_images(contents_insert_tu[0]); - if (_image_linelist.length > 0) { - _images ~= _image_linelist; - } - } - /+ - - 1. load file - - 2. read lines - - 3. scan lines - - a. if filename insert, and insert filename - - repeat 1 - - b. else - - add line to new array; - - build image list, search for any image files to add to image list - +/ - } else { - contents ~= line; - if (_opt_action.source || _opt_action.sisupod) { - auto _image_linelist = _extract_images(line); - if (_image_linelist.length > 0) { - _images ~= _image_linelist; - } - } - } - } // end src doc loop - string[] images = []; - foreach(i; uniq(_images.sort())) { - images ~= i; - } - debug(insert_file) { - writeln(__LINE__); - writeln(contents.length); - } - auto t = tuple( - contents, - insert_file_list, - images - ); - return t; - } - } -} |