From e280a374991a3a6db3c40fd1fa03a2d9c6fa66eb Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 6 Jun 2017 17:58:10 -0400 Subject: naming mostly --- org/ao_conf_make_meta.org | 91 +++++++++++++++++++---------- org/ao_debugs.org | 4 +- org/ao_read_source_files.org | 29 ++++------ org/default_misc.org | 21 ++----- org/default_paths.org | 10 ++-- org/output_hub.org | 15 +++-- org/sdp.org | 39 +++++++------ src/sdp/ao/abstraction.d | 18 +++--- src/sdp/ao/conf_make_meta_native.d | 4 +- src/sdp/ao/conf_make_meta_sdlang.d | 73 ++++++++++++++++-------- src/sdp/ao/defaults.d | 15 ++--- src/sdp/ao/doc_debugs.d | 4 +- src/sdp/ao/read_config_files.d | 17 ++---- src/sdp/ao/read_source_files.d | 6 +- src/sdp/output/hub.d | 15 +++-- src/sdp/output/paths_source.d | 10 ++-- src/sdp/sdp.d | 113 +++++++++++++++++++------------------ 17 files changed, 265 insertions(+), 219 deletions(-) diff --git a/org/ao_conf_make_meta.org b/org/ao_conf_make_meta.org index 6527269..8cd73d9 100644 --- a/org/ao_conf_make_meta.org +++ b/org/ao_conf_make_meta.org @@ -70,7 +70,6 @@ template SiSUheaderExtractHub() { * A. header sdlang (extract) :module:sdp:ao_conf_make_meta_sdlang: ** module template -** extract sdlang header #+BEGIN_SRC d :tangle ../src/sdp/ao/conf_make_meta_sdlang.d /++ @@ -100,24 +99,40 @@ template SiSUheaderExtractSDLang() { } #+END_SRC -** sdlang to associative array +** entry points +*** _sdlang to associative array_ #+name: ao_conf_make_meta_sdl #+BEGIN_SRC d -private auto sdlangToAAmake(C,Tag)(C conf, Tag conf_sdlang) { +private auto sdlangToAAheaderMakeMeta(C,Tag)(C conf, Tag conf_sdlang) { debug(asserts){ static assert(is(typeof(conf) == string[string][string])); } foreach (maintag, subtags; conf) { foreach (subtag, content; subtags) { - if (!(conf_sdlang.maybe.tags[maintag].empty)) { - if (!(conf_sdlang.tags[maintag][0].maybe.attributes[subtag].empty) - && (conf_sdlang.tags[maintag][0].attributes[subtag][0].value.length > 0)) { + if (maintag in conf_sdlang.maybe.tags) { + Tag _maintag = conf_sdlang.getTag(maintag); + if ((subtag in _maintag.maybe.tags) + && (_maintag.getTagValues(subtag).length > 0)) { debug(headersdlang) { - writeln(conf_sdlang.tags[maintag][0].attributes[subtag][0].value); + writeln(__LINE__, ": ", maintag, ":", subtag, ": ", _maintag.getTagValues(subtag)[0]); + } + if (_maintag.getTagValues(subtag).length == 1) { + conf[maintag][subtag] = + (_maintag.getTagValues(subtag)[0]).to!string; + } else if (_maintag.getTagValues(subtag).length > 1) { + foreach (st; _maintag.getTagValues(subtag)) { + conf[maintag][subtag] ~= + st.to!string ~ ";"; + } + } + } else if ((subtag in _maintag.maybe.attributes) + && (_maintag.maybe.attributes[subtag][0].value.length > 0)) { + debug(headersdlang) { + writeln(__LINE__, ": ", maintag, ":", subtag, ": ", conf_sdlang.tags[maintag][0].attributes[subtag][0].value); } conf[maintag][subtag] = - to!string(conf_sdlang.tags[maintag][0].attributes[subtag][0].value); + (conf_sdlang.tags[maintag][0].attributes[subtag][0].value).to!string; } } } @@ -126,28 +141,28 @@ private auto sdlangToAAmake(C,Tag)(C conf, Tag conf_sdlang) { } #+END_SRC -** conf settings sdlang +*** _conf settings_ sdlang #+name: ao_conf_make_meta_sdl #+BEGIN_SRC d private auto configSettingsSDLangToAAmake(Tag)(Tag conf_sdlang) { - auto conf = sdlangToAAmake(conf_aa, conf_sdlang); + auto conf = sdlangToAAheaderMakeMeta(conf_aa_empty, conf_sdlang); return conf; } #+END_SRC -** conf make sdlang +*** _conf make_ sdlang #+name: ao_conf_make_meta_sdl #+BEGIN_SRC d private auto documentMakeSDLangToAAmake(Tag)(Tag document_make_sdlang) { - auto dochead_make = sdlangToAAmake(make_aa, document_make_sdlang); + auto dochead_make = sdlangToAAheaderMakeMeta(conf_aa_empty, document_make_sdlang); return dochead_make; } #+END_SRC ** header :header:sdl: -*** sdlang header parse and extract root Tag :sdlang:root:tag: +*** sdlang header parse and _extract root Tag_ :sdlang:root:tag: #+name: ao_conf_make_meta_sdl #+BEGIN_SRC d @@ -176,13 +191,25 @@ final private auto headerMakeSDLang(Hs)(Hs src_header) { } debug(sdlang) { writeln("header SDL:"); - writeln(sdl_root_header.toSDLDocument()); + 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; } #+END_SRC -*** sdlang header get :sdlang:get:src: +*** sdlang header _src text get_ :sdlang:get:src: #+name: ao_conf_make_meta_sdl #+BEGIN_SRC d @@ -200,20 +227,11 @@ private auto headerSDLangGet(Hs)(Hs src_header) { } /+ get sdlang tags +/ auto header_sdlang=headerMakeSDLang(to!string(header_clean)); - debug(sdlang) { - writeln("--------------"); - stdout.rawWrite( header_sdlang.toSDLDocument() ); - writeln("--------------"); - Value test = header_sdlang.tags["title"][0].values[0]; - assert(test == typeid(string)); - // writeln(header_sdlang.maybe.tags["title"]); - // writeln(header_sdlang.maybe.tags["title"][0].maybe.attributes["subtitle"]); - } return header_sdlang; // sdlang.ast.Tag } #+END_SRC -*** sdlang header to associative array make sdlTag in :sdlang:aa: +*** sdlang header to _associative array_ make sdlTag in :sdlang:aa: #+name: ao_conf_make_meta_sdl #+BEGIN_SRC d @@ -221,11 +239,22 @@ private auto headerSDLangToAAmake(Tag,Ma)(Tag header_sdlang, Ma dochead_make) { debug(asserts){ static assert(is(typeof(dochead_make) == string[string][string])); } - dochead_make = sdlangToAAmake(dochead_make, header_sdlang); - auto dochead_meta = sdlangToAAmake(meta_aa, header_sdlang); + dochead_make = sdlangToAAheaderMakeMeta(dochead_make, header_sdlang); + auto dochead_meta = sdlangToAAheaderMakeMeta(meta_aa_empty, header_sdlang); if (dochead_meta["title"]["main"].empty) { - dochead_meta["title"]["main"] = - to!string(header_sdlang.maybe.tags["title"][0].values[0]); + { + Tag _maintag = header_sdlang.getTag("title"); + if (_maintag !is null) { + if ("main" in _maintag.maybe.tags) { + dochead_meta["title"]["main"] = + to!string(_maintag.getTagValues("main")); + } else if ("main" !in _maintag.maybe.attributes) { + writeln(__LINE__, ": ", _maintag.values[0]); + dochead_meta["title"]["main"] = + (_maintag.values[0]).to!string; // test that this exists + } + } + } } if (!(dochead_meta["title"]["subtitle"].empty) && (dochead_meta["title"]["sub"].empty)) { @@ -588,8 +617,8 @@ private auto headerNativeToAA(Hn)(Hn src_header) { ]; string[string] an_object; int[string] line_occur; - auto dochead_make = make_aa; - auto dochead_meta = meta_aa; + auto dochead_make = conf_aa_empty; + auto dochead_meta = meta_aa_empty; auto set_header = HeaderDocMetadataAndMakeNativeToAA(); char[][] source_header_arr = (cast(char[]) src_header).split(rgx.newline_eol_delimiter); diff --git a/org/ao_debugs.org b/org/ao_debugs.org index be525c3..1111d55 100644 --- a/org/ao_debugs.org +++ b/org/ao_debugs.org @@ -116,7 +116,7 @@ debug(dumpdoc) { __FILE__, __LINE__, ); - foreach (obj; contents) { + foreach (obj; contents[key]) { if (obj.use != "empty") { writefln( "[%s][%s]\n%s", @@ -481,7 +481,7 @@ debug(objects) { __FILE__, __LINE__, ); - foreach (obj; contents) { + foreach (obj; contents[key]) { if (obj.use != "empty") { writefln( "* [%s][%s] %s", diff --git a/org/ao_read_source_files.org b/org/ao_read_source_files.org index 930d3f8..7bbaca9 100644 --- a/org/ao_read_source_files.org +++ b/org/ao_read_source_files.org @@ -25,7 +25,7 @@ import std.path; #+END_SRC -* 1. get config file (read in) :module:sdp:ao_read_config_files: +* 1. get _config file_ (read in) :module:sdp:ao_read_config_files: ** 0. module template #+BEGIN_SRC d :tangle ../src/sdp/ao/read_config_files.d @@ -44,9 +44,9 @@ module sdp.ao.read_config_files; #+name: ao_config_file_in #+BEGIN_SRC d -template ConfigIn() { +template configIn() { <> - final string ConfigIn(C,E)(C conf_sdl, E env) { + final string configIn(C,E)(C conf_sdl, E env) { string dot_pwd = chainPath(to!string(env["pwd"]), ".sisu").array; string underscore_pwd = chainPath(to!string(env["pwd"]), "_sisu").array; string dot_home = chainPath(to!string(env["home"]), ".sisu").array; @@ -109,13 +109,6 @@ auto ConfigSDLang(string configuration, string conf_sdl_filename) { stderr.writeln("SDLang problem with content for ", conf_sdl_filename); stderr.writeln(e.msg); } - debug(sdlang) { - Value output_dir_structure_by = sdl_root_conf.tags["output_dir_structure_by"][0].values[0]; - assert(output_dir_structure_by.type == typeid(string)); - writeln(output_dir_structure_by); - writeln("conf SDL:"); - writeln(sdl_root_conf.toSDLDocument()); - } return sdl_root_conf; } #+END_SRC @@ -127,7 +120,7 @@ auto ConfigSDLang(string configuration, string conf_sdl_filename) { #+BEGIN_SRC d /+ +/ -template ConfigHub() { +template configRead() { <> <> <> @@ -142,16 +135,18 @@ import sdlang; *** config hub function +Read in sdl config file name given, and return sdl root + #+name: ao_config_file_sdlang_hub #+BEGIN_SRC d -final auto ConfigHub(C,E)(C conf_sdl, E env) { - auto configuration = ConfigIn!()(conf_sdl, env); +final auto configRead(C,E)(C conf_sdl, E env) { + auto configuration = configIn!()(conf_sdl, env); auto sdl_root = ConfigSDLang!()(configuration, conf_sdl); return sdl_root; } #+END_SRC -* 2. get markup source, read file :module:sdp:ao_read_source_files: +* 2. get _markup source_, read file :module:sdp:ao_read_source_files: ** 0. module template #+BEGIN_SRC d :tangle ../src/sdp/ao/read_source_files.d @@ -352,14 +347,14 @@ auto markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) { #+name: ao_markup_source_raw_get_insert_source_line_array #+BEGIN_SRC d final char[][] getInsertMarkupSourceContentRawLineArray( - in char[] fn_src, + in char[] fn_src_insert, Regex!(char) rgx_file ) { enforce( - fn_src.match(rgx_file), + fn_src_insert.match(rgx_file), "not a sisu markup filename" ); - auto source_txt_str = readInMarkupSource(fn_src); + auto source_txt_str = readInMarkupSource(fn_src_insert); auto source_line_arr = markupSourceLineArray(source_txt_str); return source_line_arr; } diff --git a/org/default_misc.org b/org/default_misc.org index b87a1f3..4fe8a7b 100644 --- a/org/default_misc.org +++ b/org/default_misc.org @@ -65,7 +65,7 @@ import #+name: ao_defaults_template_registers #+BEGIN_SRC d -string[string][string] conf_aa() { +string[string][string] conf_aa_empty() { auto conf_ = [ "webserv": [ "url_root" : "", @@ -120,18 +120,7 @@ string[string][string] conf_aa() { "action" : "", "db" : "", "title" : "" - ] - ]; - return conf_; -} -#+END_SRC - -**** make associative array - -#+name: ao_defaults_template_registers -#+BEGIN_SRC d -string[string][string] make_aa() { - auto make_ = [ + ], "make": [ "bold" : "", "breaks" : "", @@ -147,9 +136,9 @@ string[string][string] make_aa() { "num_depth" : "", "substitute" : "", "texpdf_font" : "" - ] + ], ]; - return make_; + return conf_; } #+END_SRC @@ -157,7 +146,7 @@ string[string][string] make_aa() { #+name: ao_defaults_template_registers #+BEGIN_SRC d -string[string][string] meta_aa() { +string[string][string] meta_aa_empty() { auto meta_ = [ "classify": [ "dewey" : "", diff --git a/org/default_paths.org b/org/default_paths.org index e3026b7..3a250a0 100644 --- a/org/default_paths.org +++ b/org/default_paths.org @@ -35,7 +35,7 @@ template SiSUpathsSRC() { auto rgx = Rgx(); auto SiSUpathsSRC(D,Fn)( D _pwd, - Fn _fn_src, + Fn _fn_src_and_relative_path, ) { struct SisuSrcPaths { auto pwd() { @@ -44,10 +44,10 @@ template SiSUpathsSRC() { auto language() { // use command line info as well? string _k; - if (auto m = _fn_src.match(rgx.language_code_and_filename)) { + if (auto m = _fn_src_and_relative_path.match(rgx.language_code_and_filename)) { _k = m.captures[1]; } else { - _k = "en"; + _k = "xx"; // original default was "en" but is not known } return _k; } @@ -70,10 +70,10 @@ template SiSUpathsSRC() { return text_root.chainPath(language).array; } auto doc_src_with_relative_path() { - return pwd.chainPath(_fn_src).array; + return pwd.chainPath(_fn_src_and_relative_path).array; } auto doc_src_fn() { - return _fn_src.baseName.array; + return _fn_src_and_relative_path.baseName.array; } } return SisuSrcPaths(); diff --git a/org/output_hub.org b/org/output_hub.org index 5855810..a859d59 100644 --- a/org/output_hub.org +++ b/org/output_hub.org @@ -72,9 +72,11 @@ if ((doc_matters.opt_action["source"]) { writeln("sisupod source processing... "); } SiSUpod!()(doc_matters); if ((doc_matters.opt_action["verbose"]) + && (doc_matters.opt_action["debug"]) && (doc_matters.opt_action["source"])) { writeln("sisu source done"); } if ((doc_matters.opt_action["verbose"]) + && (doc_matters.opt_action["debug"]) && (doc_matters.opt_action["sisupod"])) { writeln("sisupod done"); } } @@ -99,18 +101,21 @@ if (doc_matters.opt_action["text"]) { if (doc_matters.opt_action["html"]) { if ((doc_matters.opt_action["verbose"])) { writeln("html scroll processing... "); } outputHTML!().scroll(doc_abstraction, doc_matters); - if ((doc_matters.opt_action["verbose"])) { writeln("html scroll done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("html scroll done"); } if ((doc_matters.opt_action["verbose"])) { writeln("html seg processing... "); } outputHTML!().seg(doc_abstraction, doc_matters); - if ((doc_matters.opt_action["verbose"])) { writeln("html seg done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("html seg done"); } + outputHTML!().css(doc_matters); } else if (doc_matters.opt_action["html-seg"]) { if ((doc_matters.opt_action["verbose"])) { writeln("html seg processing... "); } outputHTML!().seg(doc_abstraction, doc_matters); - if ((doc_matters.opt_action["verbose"])) { writeln("html seg done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("html seg done"); } + outputHTML!().css(doc_matters); } else if (doc_matters.opt_action["html-scroll"]) { if ((doc_matters.opt_action["verbose"])) { writeln("html scroll processing... "); } outputHTML!().scroll(doc_abstraction, doc_matters); - if ((doc_matters.opt_action["verbose"])) { writeln("html scroll done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("html scroll done"); } + outputHTML!().css(doc_matters); } #+END_SRC @@ -123,7 +128,7 @@ if (doc_matters.opt_action["epub"]) { if ((doc_matters.opt_action["verbose"])) { writeln("epub3 processing... "); } outputEPub3!()(doc_abstraction, doc_matters); // epub.css_write; - if ((doc_matters.opt_action["verbose"])) { writeln("epub3 done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("epub3 done"); } } #+END_SRC diff --git a/org/sdp.org b/org/sdp.org index 4a7e848..2f58357 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -60,15 +60,18 @@ void main(string[] args) { <> <> <> - foreach(fn_src; fns_src) { - if (!empty(fn_src)) { - <> - <> - <> - <> - <> - } else { - <> + <> + if (fns_src.length > 0) { + foreach(fn_src; fns_src) { + if (!empty(fn_src)) { + <> + <> + <> + <> + <> + } else { + <> + } } } } @@ -308,8 +311,8 @@ auto env = [ #+NAME: sdp_conf_files #+BEGIN_SRC d -auto sdl_root_configuration = ConfigHub!()("conf.sdl", env); -auto sdl_root_doc_make = ConfigHub!()("sisu_document_make", env); +auto sdl_root_configuration = configRead!()("conf.sdl", env); +auto sdl_root_doc_make = configRead!()("sisu_document_make", env); auto confsdl = HeaderExtractSDL(); auto conf_settings_aa = confsdl.configSettingsSDLangToAAmake(sdl_root_configuration); auto conf_doc_make_aa = confsdl.documentMakeSDLangToAAmake(sdl_root_doc_make); @@ -486,10 +489,10 @@ debug(header_and_body) { #+NAME: sdp_each_file_do_split_sisu_markup_file_header_into_make_and_meta #+BEGIN_SRC d /+ ↓ split header into make and meta +/ -auto _make_and_meta = +auto _make_and_meta_tup = SiSUheaderExtractHub!()(_header_body_inserts[headBody.header], conf_doc_make_aa); -static assert(!isTypeTuple!(_make_and_meta)); -static assert(_make_and_meta.length==2); +static assert(!isTypeTuple!(_make_and_meta_tup)); +static assert(_make_and_meta_tup.length==2); #+END_SRC ** 3. _document abstraction, tuple_ (pre-output-processing) :processing: @@ -511,8 +514,8 @@ static assert(_make_and_meta.length==2); /+ ↓ document abstraction: process document, return abstraction as tuple +/ auto da = SiSUdocAbstraction!()( _header_body_inserts[headBody.body_content], - _make_and_meta[makeMeta.make], - _make_and_meta[makeMeta.meta], + _make_and_meta_tup[makeMeta.make], + _make_and_meta_tup[makeMeta.meta], opts ); static assert(!isTypeTuple!(da)); @@ -546,11 +549,11 @@ struct DocumentMatters { return _k; } auto dochead_make() { - string[string][string] _k = _make_and_meta[makeMeta.make]; + string[string][string] _k = _make_and_meta_tup[makeMeta.make]; return _k; } auto dochead_meta() { - string[string][string] _k = _make_and_meta[makeMeta.meta]; + string[string][string] _k = _make_and_meta_tup[makeMeta.meta]; return _k; } auto src_path_info() { diff --git a/src/sdp/ao/abstraction.d b/src/sdp/ao/abstraction.d index c592436..317f841 100644 --- a/src/sdp/ao/abstraction.d +++ b/src/sdp/ao/abstraction.d @@ -30,8 +30,8 @@ template SiSUabstraction() { enum docAbst { doc_abstraction, section_keys, segnames, segnames_0_4, images } auto rgx = Rgx(); auto SiSUabstraction(Fn,O,E)(Fn fn_src, O opts, E env){ - auto sdl_root_configuration = ConfigHub!()("conf.sdl", env); - auto sdl_root_doc_make = ConfigHub!()("sisu_document_make", env); + auto sdl_root_configuration = configRead!()("conf.sdl", env); + auto sdl_root_doc_make = configRead!()("sisu_document_make", env); auto confsdl = HeaderExtractSDL(); auto conf_settings_aa = confsdl.configSettingsSDLangToAAmake(sdl_root_configuration); auto conf_doc_make_aa = confsdl.documentMakeSDLangToAAmake(sdl_root_doc_make); @@ -47,15 +47,15 @@ template SiSUabstraction() { writeln(_header_body_inserts.length[headBody.body_content][0]); } /+ ↓ split header into make and meta +/ - auto _make_and_meta = + auto _make_and_meta_tup = SiSUheaderExtractHub!()(_header_body_inserts[headBody.header], conf_doc_make_aa); - static assert(!isTypeTuple!(_make_and_meta)); - static assert(_make_and_meta.length==2); + static assert(!isTypeTuple!(_make_and_meta_tup)); + static assert(_make_and_meta_tup.length==2); /+ ↓ document abstraction: process document, return abstraction as tuple +/ auto da = SiSUdocAbstraction!()( _header_body_inserts[headBody.body_content], - _make_and_meta[makeMeta.make], - _make_and_meta[makeMeta.meta], + _make_and_meta_tup[makeMeta.make], + _make_and_meta_tup[makeMeta.meta], opts ); static assert(!isTypeTuple!(da)); @@ -80,11 +80,11 @@ template SiSUabstraction() { return _k; } auto dochead_make() { - string[string][string] _k = _make_and_meta[makeMeta.make]; + string[string][string] _k = _make_and_meta_tup[makeMeta.make]; return _k; } auto dochead_meta() { - string[string][string] _k = _make_and_meta[makeMeta.meta]; + string[string][string] _k = _make_and_meta_tup[makeMeta.meta]; return _k; } auto src_path_info() { diff --git a/src/sdp/ao/conf_make_meta_native.d b/src/sdp/ao/conf_make_meta_native.d index 8954c9a..aae0b4d 100644 --- a/src/sdp/ao/conf_make_meta_native.d +++ b/src/sdp/ao/conf_make_meta_native.d @@ -286,8 +286,8 @@ template SiSUheaderExtractNative() { ]; string[string] an_object; int[string] line_occur; - auto dochead_make = make_aa; - auto dochead_meta = meta_aa; + auto dochead_make = conf_aa_empty; + auto dochead_meta = meta_aa_empty; auto set_header = HeaderDocMetadataAndMakeNativeToAA(); char[][] source_header_arr = (cast(char[]) src_header).split(rgx.newline_eol_delimiter); diff --git a/src/sdp/ao/conf_make_meta_sdlang.d b/src/sdp/ao/conf_make_meta_sdlang.d index 567853e..7e7dd62 100644 --- a/src/sdp/ao/conf_make_meta_sdlang.d +++ b/src/sdp/ao/conf_make_meta_sdlang.d @@ -20,20 +20,35 @@ template SiSUheaderExtractSDLang() { mixin SiSUregisters; mixin SiSUrgxInit; auto rgx = Rgx(); - private auto sdlangToAAmake(C,Tag)(C conf, Tag conf_sdlang) { + private auto sdlangToAAheaderMakeMeta(C,Tag)(C conf, Tag conf_sdlang) { debug(asserts){ static assert(is(typeof(conf) == string[string][string])); } foreach (maintag, subtags; conf) { foreach (subtag, content; subtags) { - if (!(conf_sdlang.maybe.tags[maintag].empty)) { - if (!(conf_sdlang.tags[maintag][0].maybe.attributes[subtag].empty) - && (conf_sdlang.tags[maintag][0].attributes[subtag][0].value.length > 0)) { + if (maintag in conf_sdlang.maybe.tags) { + Tag _maintag = conf_sdlang.getTag(maintag); + if ((subtag in _maintag.maybe.tags) + && (_maintag.getTagValues(subtag).length > 0)) { debug(headersdlang) { - writeln(conf_sdlang.tags[maintag][0].attributes[subtag][0].value); + writeln(__LINE__, ": ", maintag, ":", subtag, ": ", _maintag.getTagValues(subtag)[0]); + } + if (_maintag.getTagValues(subtag).length == 1) { + conf[maintag][subtag] = + (_maintag.getTagValues(subtag)[0]).to!string; + } else if (_maintag.getTagValues(subtag).length > 1) { + foreach (st; _maintag.getTagValues(subtag)) { + conf[maintag][subtag] ~= + st.to!string ~ ";"; + } + } + } else if ((subtag in _maintag.maybe.attributes) + && (_maintag.maybe.attributes[subtag][0].value.length > 0)) { + debug(headersdlang) { + writeln(__LINE__, ": ", maintag, ":", subtag, ": ", conf_sdlang.tags[maintag][0].attributes[subtag][0].value); } conf[maintag][subtag] = - to!string(conf_sdlang.tags[maintag][0].attributes[subtag][0].value); + (conf_sdlang.tags[maintag][0].attributes[subtag][0].value).to!string; } } } @@ -41,11 +56,11 @@ template SiSUheaderExtractSDLang() { return conf; } private auto configSettingsSDLangToAAmake(Tag)(Tag conf_sdlang) { - auto conf = sdlangToAAmake(conf_aa, conf_sdlang); + auto conf = sdlangToAAheaderMakeMeta(conf_aa_empty, conf_sdlang); return conf; } private auto documentMakeSDLangToAAmake(Tag)(Tag document_make_sdlang) { - auto dochead_make = sdlangToAAmake(make_aa, document_make_sdlang); + auto dochead_make = sdlangToAAheaderMakeMeta(conf_aa_empty, document_make_sdlang); return dochead_make; } final private auto headerMakeSDLang(Hs)(Hs src_header) { @@ -73,7 +88,19 @@ template SiSUheaderExtractSDLang() { } debug(sdlang) { writeln("header SDL:"); - writeln(sdl_root_header.toSDLDocument()); + 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; } @@ -91,26 +118,28 @@ template SiSUheaderExtractSDLang() { } /+ get sdlang tags +/ auto header_sdlang=headerMakeSDLang(to!string(header_clean)); - debug(sdlang) { - writeln("--------------"); - stdout.rawWrite( header_sdlang.toSDLDocument() ); - writeln("--------------"); - Value test = header_sdlang.tags["title"][0].values[0]; - assert(test == typeid(string)); - // writeln(header_sdlang.maybe.tags["title"]); - // writeln(header_sdlang.maybe.tags["title"][0].maybe.attributes["subtitle"]); - } return header_sdlang; // sdlang.ast.Tag } private auto headerSDLangToAAmake(Tag,Ma)(Tag header_sdlang, Ma dochead_make) { debug(asserts){ static assert(is(typeof(dochead_make) == string[string][string])); } - dochead_make = sdlangToAAmake(dochead_make, header_sdlang); - auto dochead_meta = sdlangToAAmake(meta_aa, header_sdlang); + dochead_make = sdlangToAAheaderMakeMeta(dochead_make, header_sdlang); + auto dochead_meta = sdlangToAAheaderMakeMeta(meta_aa_empty, header_sdlang); if (dochead_meta["title"]["main"].empty) { - dochead_meta["title"]["main"] = - to!string(header_sdlang.maybe.tags["title"][0].values[0]); + { + Tag _maintag = header_sdlang.getTag("title"); + if (_maintag !is null) { + if ("main" in _maintag.maybe.tags) { + dochead_meta["title"]["main"] = + to!string(_maintag.getTagValues("main")); + } else if ("main" !in _maintag.maybe.attributes) { + writeln(__LINE__, ": ", _maintag.values[0]); + dochead_meta["title"]["main"] = + (_maintag.values[0]).to!string; // test that this exists + } + } + } } if (!(dochead_meta["title"]["subtitle"].empty) && (dochead_meta["title"]["sub"].empty)) { diff --git a/src/sdp/ao/defaults.d b/src/sdp/ao/defaults.d index 4a989b6..caee701 100644 --- a/src/sdp/ao/defaults.d +++ b/src/sdp/ao/defaults.d @@ -22,7 +22,7 @@ template SiSUregisters() { std.uni, std.utf, std.conv : to; - string[string][string] conf_aa() { + string[string][string] conf_aa_empty() { auto conf_ = [ "webserv": [ "url_root" : "", @@ -77,12 +77,7 @@ template SiSUregisters() { "action" : "", "db" : "", "title" : "" - ] - ]; - return conf_; - } - string[string][string] make_aa() { - auto make_ = [ + ], "make": [ "bold" : "", "breaks" : "", @@ -98,11 +93,11 @@ template SiSUregisters() { "num_depth" : "", "substitute" : "", "texpdf_font" : "" - ] + ], ]; - return make_; + return conf_; } - string[string][string] meta_aa() { + string[string][string] meta_aa_empty() { auto meta_ = [ "classify": [ "dewey" : "", diff --git a/src/sdp/ao/doc_debugs.d b/src/sdp/ao/doc_debugs.d index 419f5cd..87a64f4 100644 --- a/src/sdp/ao/doc_debugs.d +++ b/src/sdp/ao/doc_debugs.d @@ -60,7 +60,7 @@ template SiSUdebugs() { __FILE__, __LINE__, ); - foreach (obj; contents) { + foreach (obj; contents[key]) { if (obj.use != "empty") { writefln( "[%s][%s]\n%s", @@ -235,7 +235,7 @@ template SiSUdebugs() { __FILE__, __LINE__, ); - foreach (obj; contents) { + foreach (obj; contents[key]) { if (obj.use != "empty") { writefln( "* [%s][%s] %s", diff --git a/src/sdp/ao/read_config_files.d b/src/sdp/ao/read_config_files.d index 57213c4..8f525f3 100644 --- a/src/sdp/ao/read_config_files.d +++ b/src/sdp/ao/read_config_files.d @@ -4,12 +4,12 @@ ao_config_files.d +/ module sdp.ao.read_config_files; -template ConfigIn() { +template configIn() { import sdp.ao, std.file, std.path; - final string ConfigIn(C,E)(C conf_sdl, E env) { + final string configIn(C,E)(C conf_sdl, E env) { string dot_pwd = chainPath(to!string(env["pwd"]), ".sisu").array; string underscore_pwd = chainPath(to!string(env["pwd"]), "_sisu").array; string dot_home = chainPath(to!string(env["home"]), ".sisu").array; @@ -61,26 +61,19 @@ template ConfigSDLang() { stderr.writeln("SDLang problem with content for ", conf_sdl_filename); stderr.writeln(e.msg); } - debug(sdlang) { - Value output_dir_structure_by = sdl_root_conf.tags["output_dir_structure_by"][0].values[0]; - assert(output_dir_structure_by.type == typeid(string)); - writeln(output_dir_structure_by); - writeln("conf SDL:"); - writeln(sdl_root_conf.toSDLDocument()); - } return sdl_root_conf; } } /+ +/ -template ConfigHub() { +template configRead() { import sdp.ao, std.file, std.path; - final auto ConfigHub(C,E)(C conf_sdl, E env) { - auto configuration = ConfigIn!()(conf_sdl, env); + final auto configRead(C,E)(C conf_sdl, E env) { + auto configuration = configIn!()(conf_sdl, env); auto sdl_root = ConfigSDLang!()(configuration, conf_sdl); return sdl_root; } diff --git a/src/sdp/ao/read_source_files.d b/src/sdp/ao/read_source_files.d index 3b348f3..db20cfd 100644 --- a/src/sdp/ao/read_source_files.d +++ b/src/sdp/ao/read_source_files.d @@ -115,14 +115,14 @@ template SiSUrawMarkupContent() { return t; } final char[][] getInsertMarkupSourceContentRawLineArray( - in char[] fn_src, + in char[] fn_src_insert, Regex!(char) rgx_file ) { enforce( - fn_src.match(rgx_file), + fn_src_insert.match(rgx_file), "not a sisu markup filename" ); - auto source_txt_str = readInMarkupSource(fn_src); + auto source_txt_str = readInMarkupSource(fn_src_insert); auto source_line_arr = markupSourceLineArray(source_txt_str); return source_line_arr; } diff --git a/src/sdp/output/hub.d b/src/sdp/output/hub.d index fd64851..2a1221f 100644 --- a/src/sdp/output/hub.d +++ b/src/sdp/output/hub.d @@ -27,9 +27,11 @@ template outputHub() { { writeln("sisupod source processing... "); } SiSUpod!()(doc_matters); if ((doc_matters.opt_action["verbose"]) + && (doc_matters.opt_action["debug"]) && (doc_matters.opt_action["source"])) { writeln("sisu source done"); } if ((doc_matters.opt_action["verbose"]) + && (doc_matters.opt_action["debug"]) && (doc_matters.opt_action["sisupod"])) { writeln("sisupod done"); } } @@ -40,24 +42,27 @@ template outputHub() { if (doc_matters.opt_action["html"]) { if ((doc_matters.opt_action["verbose"])) { writeln("html scroll processing... "); } outputHTML!().scroll(doc_abstraction, doc_matters); - if ((doc_matters.opt_action["verbose"])) { writeln("html scroll done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("html scroll done"); } if ((doc_matters.opt_action["verbose"])) { writeln("html seg processing... "); } outputHTML!().seg(doc_abstraction, doc_matters); - if ((doc_matters.opt_action["verbose"])) { writeln("html seg done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("html seg done"); } + outputHTML!().css(doc_matters); } else if (doc_matters.opt_action["html-seg"]) { if ((doc_matters.opt_action["verbose"])) { writeln("html seg processing... "); } outputHTML!().seg(doc_abstraction, doc_matters); - if ((doc_matters.opt_action["verbose"])) { writeln("html seg done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("html seg done"); } + outputHTML!().css(doc_matters); } else if (doc_matters.opt_action["html-scroll"]) { if ((doc_matters.opt_action["verbose"])) { writeln("html scroll processing... "); } outputHTML!().scroll(doc_abstraction, doc_matters); - if ((doc_matters.opt_action["verbose"])) { writeln("html scroll done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("html scroll done"); } + outputHTML!().css(doc_matters); } if (doc_matters.opt_action["epub"]) { if ((doc_matters.opt_action["verbose"])) { writeln("epub3 processing... "); } outputEPub3!()(doc_abstraction, doc_matters); // epub.css_write; - if ((doc_matters.opt_action["verbose"])) { writeln("epub3 done"); } + if ((doc_matters.opt_action["verbose"]) && (doc_matters.opt_action["debug"])) { writeln("epub3 done"); } } if (doc_matters.opt_action["pdf"]) { /+ mixin outputPDF; +/ diff --git a/src/sdp/output/paths_source.d b/src/sdp/output/paths_source.d index 7658df5..80e2c1a 100644 --- a/src/sdp/output/paths_source.d +++ b/src/sdp/output/paths_source.d @@ -14,7 +14,7 @@ template SiSUpathsSRC() { auto rgx = Rgx(); auto SiSUpathsSRC(D,Fn)( D _pwd, - Fn _fn_src, + Fn _fn_src_and_relative_path, ) { struct SisuSrcPaths { auto pwd() { @@ -23,10 +23,10 @@ template SiSUpathsSRC() { auto language() { // use command line info as well? string _k; - if (auto m = _fn_src.match(rgx.language_code_and_filename)) { + if (auto m = _fn_src_and_relative_path.match(rgx.language_code_and_filename)) { _k = m.captures[1]; } else { - _k = "en"; + _k = "xx"; // original default was "en" but is not known } return _k; } @@ -49,10 +49,10 @@ template SiSUpathsSRC() { return text_root.chainPath(language).array; } auto doc_src_with_relative_path() { - return pwd.chainPath(_fn_src).array; + return pwd.chainPath(_fn_src_and_relative_path).array; } auto doc_src_fn() { - return _fn_src.baseName.array; + return _fn_src_and_relative_path.baseName.array; } } return SisuSrcPaths(); diff --git a/src/sdp/sdp.d b/src/sdp/sdp.d index 3816f9b..60d56f9 100755 --- a/src/sdp/sdp.d +++ b/src/sdp/sdp.d @@ -147,68 +147,71 @@ void main(string[] args) { "pwd" : environment["PWD"], "home" : environment["HOME"], ]; - auto sdl_root_configuration = ConfigHub!()("conf.sdl", env); - auto sdl_root_doc_make = ConfigHub!()("sisu_document_make", env); + auto sdl_root_configuration = configRead!()("conf.sdl", env); + auto sdl_root_doc_make = configRead!()("sisu_document_make", env); auto confsdl = HeaderExtractSDL(); auto conf_settings_aa = confsdl.configSettingsSDLangToAAmake(sdl_root_configuration); auto conf_doc_make_aa = confsdl.documentMakeSDLangToAAmake(sdl_root_doc_make); - foreach(fn_src; fns_src) { - if (!empty(fn_src)) { - scope(success) { - debug(checkdoc) { - writefln( - "%s\n%s", - "~ document complete, ok ~", - "------------------------------------------------------------------", - ); + + if (fns_src.length > 0) { + foreach(fn_src; fns_src) { + if (!empty(fn_src)) { + scope(success) { + debug(checkdoc) { + writefln( + "%s\n%s", + "~ document complete, ok ~", + "------------------------------------------------------------------", + ); + } } - } - scope(failure) { - debug(checkdoc) { - stderr.writefln( - "~ document run failure ~ (%s v%s)\n\t%s", - __VENDOR__, __VERSION__, - fn_src - ); + scope(failure) { + debug(checkdoc) { + stderr.writefln( + "~ document run failure ~ (%s v%s)\n\t%s", + __VENDOR__, __VERSION__, + fn_src + ); + } } - } - enforce( - fn_src.match(rgx.src_pth), - "not a sisu markup filename" - ); - auto t = - SiSUabstraction!()(fn_src, opts, env); - static assert(!isTypeTuple!(t)); - static assert(t.length==2); - auto doc_abstraction = t[dAM.abstraction]; - auto doc_matters = t[dAM.matters]; - /+ ↓ debugs +/ - if (doc_matters.opt_action["verbose"]) { - SiSUabstractionSummary!()(doc_abstraction, doc_matters); - } - /+ ↓ debugs +/ - if ((doc_matters.opt_action["debug"]) - || (doc_matters.opt_action["verbose"]) - ) { - SiSUdebugs!()(doc_abstraction, doc_matters); - } - /+ ↓ output hub +/ - if (!(opts["skip-output"])) { - outputHub!()(doc_abstraction, doc_matters); - } - scope(exit) { - debug(checkdoc) { - writefln( - "processed file: %s", - fn_src - ); + enforce( + fn_src.match(rgx.src_pth), + "not a sisu markup filename" + ); + auto t = + SiSUabstraction!()(fn_src, opts, env); + static assert(!isTypeTuple!(t)); + static assert(t.length==2); + auto doc_abstraction = t[dAM.abstraction]; + auto doc_matters = t[dAM.matters]; + /+ ↓ debugs +/ + if (doc_matters.opt_action["verbose"]) { + SiSUabstractionSummary!()(doc_abstraction, doc_matters); + } + /+ ↓ debugs +/ + if ((doc_matters.opt_action["debug"]) + || (doc_matters.opt_action["verbose"]) + ) { + SiSUdebugs!()(doc_abstraction, doc_matters); + } + /+ ↓ output hub +/ + if (!(opts["skip-output"])) { + outputHub!()(doc_abstraction, doc_matters); + } + scope(exit) { + debug(checkdoc) { + writefln( + "processed file: %s", + fn_src + ); + } + destroy(fn_src); } - destroy(fn_src); + } else { + /+ no recognized filename provided +/ + writeln("no recognized filename"); + break; // terminate, stop } - } else { - /+ no recognized filename provided +/ - writeln("no recognized filename"); - break; // terminate, stop } } } -- cgit v1.2.3