From 2598e9f10a362f15fef081504d69757001b39cfb Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Thu, 26 Jan 2017 15:17:59 -0500 Subject: output, message passing, minor --- org/output.org | 63 ++++++++++++++++---------------------- src/sdp.d | 2 +- src/sdp/ao_abstract_doc_source.d | 15 +++------ src/sdp/ao_conf_make_meta_native.d | 2 +- src/sdp/ao_conf_make_meta_sdlang.d | 2 +- src/sdp/ao_output_debugs.d | 2 +- src/sdp/ao_read_source_files.d | 3 -- src/sdp/ao_rgx.d | 2 +- src/sdp/output_epub.d | 32 ++++++++----------- src/sdp/output_html.d | 29 ++++++++---------- 10 files changed, 60 insertions(+), 92 deletions(-) diff --git a/org/output.org b/org/output.org index e0cf35b..74fca4e 100644 --- a/org/output.org +++ b/org/output.org @@ -535,9 +535,9 @@ auto endnote(O)( #+name: output_html_scroll #+BEGIN_SRC d -void scroll_write_output_file(Fn,D)( +void scroll_write_output_file(Fn,C)( Fn fn_src, - D doc, + C doc, ) { debug(asserts){ static assert(is(typeof(fn_src) == string)); @@ -681,25 +681,22 @@ void scroll(C,T)( #+name: output_html_seg #+BEGIN_SRC d -void seg_write_output_files(Fn,FnS,D)( - Fn fn_src, - FnS seg_filenames, - D doc_html, +void seg_write_output_files(M,C)( + M doc_matters, + C doc_html, ) { debug(asserts){ - static assert(is(typeof(fn_src) == string)); - static assert(is(typeof(seg_filenames) == string[])); static assert(is(typeof(doc_html) == string[][string])); } mixin SiSUpaths; auto pth_html = HtmlPaths(); auto xhtml_format = outputXHTMLs(); - auto m = matchFirst(fn_src, rgx.src_fn); + auto m = matchFirst(doc_matters.source_filename, rgx.src_fn); try { - mkdirRecurse(pth_html.seg(fn_src)); - foreach (seg_filename; seg_filenames) { + mkdirRecurse(pth_html.seg(doc_matters.source_filename)); + foreach (seg_filename; doc_matters.segnames) { // writeln(__LINE__, ": ", fn); - auto f = File(pth_html.fn_seg(fn_src, seg_filename), "w"); + auto f = File(pth_html.fn_seg(doc_matters.source_filename, seg_filename), "w"); /+ // f.writeln(seg_head); // not needed built and inserted earlier +/ foreach (docseg; doc_html[seg_filename]) { f.writeln(docseg); @@ -717,16 +714,15 @@ void seg_write_output_files(Fn,FnS,D)( #+name: output_html_seg #+BEGIN_SRC d -void seg(C,T)( +void seg(C,M)( auto ref const C contents, - auto ref T doc_matters, + auto ref M doc_matters, ) { auto xhtml_format = outputXHTMLs(); auto rgx = Rgx(); string[][string] doc_html; string[] doc; string segment_filename; - string[] seg_filenames; string[] top_level_headings = ["","","",""]; foreach (part; doc_matters.keys_seq_seg) { foreach (obj; contents[part]) { @@ -759,7 +755,6 @@ void seg(C,T)( } break; case 4: - seg_filenames ~= obj.segment_anchor_tag; segment_filename = obj.segment_anchor_tag; doc_html[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta); // consider placing seg_head here as can more easily populate it with lev4 info foreach (top_level_heading; top_level_headings) { @@ -866,7 +861,7 @@ void seg(C,T)( } } writeln(doc_matters.keys_seq_seg); - seg_write_output_files(doc_matters.source_filename, seg_filenames, doc_html); + seg_write_output_files(doc_matters, doc_html); } #+END_SRC @@ -2348,7 +2343,7 @@ obj.segment_anchor_tag, // lev < 4 [no link]; lev == 4 [filename] markup.xhtml } #+END_SRC -**** (sections & objects) switch (for epub xhtml output format) +**** build (sections & objects) switch (for epub xhtml output format) #+name: output_epub_xhtml_seg #+BEGIN_SRC d @@ -2362,7 +2357,6 @@ void doc_content(C,T)( string[][string] doc_epub; string[] doc; string segment_filename; - string[] seg_filenames; string[] top_level_headings = ["","","",""]; auto mimetypes = epub_mimetypes; auto meta_inf_container_xml = epub_container_xml; @@ -2401,7 +2395,6 @@ void doc_content(C,T)( } break; case 4: - seg_filenames ~= obj.segment_anchor_tag; segment_filename = obj.segment_anchor_tag; doc_epub[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta); foreach (top_level_heading; top_level_headings) { @@ -2515,8 +2508,7 @@ void doc_content(C,T)( } writeln(doc_matters.keys_seq_seg); epub_write_output_files( - doc_matters.source_filename, - seg_filenames, + doc_matters, doc_epub, mimetypes, meta_inf_container_xml, @@ -2530,18 +2522,15 @@ void doc_content(C,T)( #+name: output_epub_xhtml_seg #+BEGIN_SRC d -void epub_write_output_files(Fn,FnS,De,Mt,Mic,Ot,Oc)( - Fn fn_src, - FnS seg_filenames, - De doc_epub, +void epub_write_output_files(C,EpD,Mt,Mic,Ot,Oc)( + C doc_matters, + EpD doc_epub, Mt mimetypes, Mic meta_inf_container_xml, Ot oebps_toc_ncx, Oc oebps_content_opf, ) { debug(asserts){ - static assert(is(typeof(fn_src) == string)); - static assert(is(typeof(seg_filenames) == string[])); static assert(is(typeof(doc_epub) == string[][string])); static assert(is(typeof(mimetypes) == string)); static assert(is(typeof(meta_inf_container_xml) == string)); @@ -2553,12 +2542,12 @@ void epub_write_output_files(Fn,FnS,De,Mt,Mic,Ot,Oc)( // doc = xhtml_format.scroll_head ~ doc_epub ~ xhtml_format.tail; auto xhtml_format = outputXHTMLs(); try { - mkdirRecurse(pth_epub.doc_meta_inf(fn_src)); - mkdirRecurse(pth_epub.doc_oebps_css(fn_src)); - mkdirRecurse(pth_epub.doc_oebps_image(fn_src)); + mkdirRecurse(pth_epub.doc_meta_inf(doc_matters.source_filename)); + mkdirRecurse(pth_epub.doc_oebps_css(doc_matters.source_filename)); + mkdirRecurse(pth_epub.doc_oebps_image(doc_matters.source_filename)); /+ OEBPS/[segments].xhtml +/ - foreach (seg_filename; seg_filenames) { - auto f = File(pth_epub.fn_oebps_content_xhtml(fn_src, seg_filename), "w"); + foreach (seg_filename; doc_matters.segnames) { + auto f = File(pth_epub.fn_oebps_content_xhtml(doc_matters.source_filename, seg_filename), "w"); /+ // f.writeln(seg_head); // not needed built and inserted earlier +/ foreach (docseg; doc_epub[seg_filename]) { f.writeln(docseg); @@ -2566,16 +2555,16 @@ void epub_write_output_files(Fn,FnS,De,Mt,Mic,Ot,Oc)( f.writeln(xhtml_format.tail); // needed for each lev4 } /+ mimetypes +/ - auto f = File(pth_epub.fn_mimetypes(fn_src), "w"); + auto f = File(pth_epub.fn_mimetypes(doc_matters.source_filename), "w"); f.writeln(mimetypes); /+ META-INF/container.xml +/ - f = File(pth_epub.fn_dmi_container_xml(fn_src), "w"); + f = File(pth_epub.fn_dmi_container_xml(doc_matters.source_filename), "w"); f.writeln(meta_inf_container_xml); /+ OEBPS/toc.ncx +/ - f = File(pth_epub.fn_oebps_toc_ncx(fn_src), "w"); + f = File(pth_epub.fn_oebps_toc_ncx(doc_matters.source_filename), "w"); f.writeln(oebps_toc_ncx); /+ OEBPS/content.opf +/ - f = File(pth_epub.fn_oebps_content_opf(fn_src), "w"); + f = File(pth_epub.fn_oebps_content_opf(doc_matters.source_filename), "w"); f.writeln(oebps_content_opf); } catch (ErrnoException ex) { diff --git a/src/sdp.d b/src/sdp.d index 94ef276..04cca77 100755 --- a/src/sdp.d +++ b/src/sdp.d @@ -43,9 +43,9 @@ private import mixin(import("version.txt")); mixin CompileTimeInfo; -mixin RgxInit; /++ A SiSU document parser writen in D. +/ void main(string[] args) { + mixin SiSUrgxInit; mixin SiSUregisters; mixin SiSUheaderExtractHub; mixin SiSUheaderExtractSDLang; diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d index cd121c5..ed4e637 100644 --- a/src/sdp/ao_abstract_doc_source.d +++ b/src/sdp/ao_abstract_doc_source.d @@ -7,16 +7,13 @@ template SiSUdocAbstraction() { private: struct SiSUdocAbstraction { /+ ↓ abstraction imports +/ - import - ao_defaults, // sdp/ao_defaults.d - ao_object_setter, // sdp/ao_object_setter.d - ao_rgx; // sdp/ao_rgx.d + import ao_object_setter; /+ ↓ abstraction mixins +/ mixin ObjectSetter; mixin InternalMarkup; + mixin SiSUrgxInit; /+ ↓ abstraction struct init +/ /+ initialize +/ - auto rgx = Rgx(); ObjGenericComposite[][string] the_table_of_contents_section; ObjGenericComposite[] the_document_head_section, the_document_body_section, the_bibliography_section, the_glossary_section, the_blurb_section; ObjGenericComposite[] the_dom_tail_section; @@ -3104,7 +3101,6 @@ template SiSUdocAbstraction() { } } body { - auto rgx = Rgx(); obj_txt["munge"]=obj_txt_in; obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.para_attribs, ""); obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.obj_cite_number_off_all, ""); @@ -3124,7 +3120,6 @@ template SiSUdocAbstraction() { } } body { - auto rgx = Rgx(); obj_txt["munge"]=obj_txt_in; obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.heading, ""); obj_txt["munge"]=replaceFirst(obj_txt["munge"], rgx.obj_cite_number_off_all, ""); @@ -3222,6 +3217,7 @@ template SiSUdocAbstraction() { } } struct ObjInlineMarkup { + auto rgx = Rgx(); auto munge = ObjInlineMarkupMunge(); string[string] obj_txt; auto obj_inline_markup_and_anchor_tags(O,K,Ma)( @@ -3732,7 +3728,6 @@ template SiSUdocAbstraction() { } } body { - auto rgx = Rgx(); if (matchFirst(obj_txt_in, rgx.para_bullet)) { _obj_attributes =" \"bullet\": \"true\"," ~ " \"indent_hang\": 0," @@ -4447,6 +4442,7 @@ template SiSUdocAbstraction() { int lv, lv0, lv1, lv2, lv3, lv4, lv5, lv6, lv7; int obj_cite_number; int[string] p_; // p_ parent_ + auto rgx = Rgx(); ObjGenericComposite node_location_emitter(Lv,Ta,N,C,P,I)( Lv lev_markup_number, Ta segment_anchor_tag, @@ -4464,7 +4460,6 @@ template SiSUdocAbstraction() { static assert(is(typeof(ptr_) == int)); static assert(is(typeof(is_) == string)); } - auto rgx = Rgx(); assert(is_ != "heading"); assert(to!int(obj_cite_number_) >= 0); } @@ -4533,7 +4528,6 @@ template SiSUdocAbstraction() { static assert(is(typeof(is_) == string)); static assert(is(typeof(html_segnames_ptr) == int)); } - auto rgx = Rgx(); assert(is_ == "heading"); assert(to!int(obj_cite_number_) >= 0); assert( @@ -4547,7 +4541,6 @@ template SiSUdocAbstraction() { } } body { - auto rgx = Rgx(); int obj_cite_number = to!int(obj_cite_number_); switch (to!int(lev_markup_number)) { // switch (to!string(lv)) { case 0: diff --git a/src/sdp/ao_conf_make_meta_native.d b/src/sdp/ao_conf_make_meta_native.d index 6fe38e9..cc907b2 100644 --- a/src/sdp/ao_conf_make_meta_native.d +++ b/src/sdp/ao_conf_make_meta_native.d @@ -13,7 +13,7 @@ template SiSUheaderExtractNative() { struct HeaderDocMetadataAndMakeNativeToAA { mixin SiSUregisters; mixin SiSUrgxInitFlags; - mixin RgxInit; + mixin SiSUrgxInit; auto rgx = Rgx(); enum State { off, on } string hm, hs; diff --git a/src/sdp/ao_conf_make_meta_sdlang.d b/src/sdp/ao_conf_make_meta_sdlang.d index 801df7e..fe1696d 100644 --- a/src/sdp/ao_conf_make_meta_sdlang.d +++ b/src/sdp/ao_conf_make_meta_sdlang.d @@ -9,7 +9,7 @@ template SiSUheaderExtractSDLang() { ao_rgx; struct HeaderExtractSDL { mixin SiSUregisters; - mixin RgxInit; + mixin SiSUrgxInit; auto rgx = Rgx(); private auto sdlangToAAmake(C,Tag)(C conf, Tag conf_sdlang) { debug(asserts){ diff --git a/src/sdp/ao_output_debugs.d b/src/sdp/ao_output_debugs.d index 8b22f28..2872833 100644 --- a/src/sdp/ao_output_debugs.d +++ b/src/sdp/ao_output_debugs.d @@ -7,7 +7,7 @@ template SiSUoutputDebugs() { auto ref const S contents, auto ref T doc_matters, ) { - mixin RgxInit; + mixin SiSUrgxInit; mixin InternalMarkup; auto rgx = Rgx(); auto markup = InlineMarkup(); diff --git a/src/sdp/ao_read_source_files.d b/src/sdp/ao_read_source_files.d index 34aed22..f25ed7e 100644 --- a/src/sdp/ao_read_source_files.d +++ b/src/sdp/ao_read_source_files.d @@ -10,9 +10,6 @@ template SiSUmarkupRaw() { std.stdio, std.utf, std.conv : to; - private import - ao_rgx; // ao_defaults.d - mixin RgxInit; auto rgx = Rgx(); struct MarkupRaw { final sourceContent(in string fn_src) { diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d index f800a12..286aa76 100644 --- a/src/sdp/ao_rgx.d +++ b/src/sdp/ao_rgx.d @@ -1,7 +1,7 @@ /++ regex: regular expressions used in sisu document parser +/ -template RgxInit() { +template SiSUrgxInit() { struct Rgx { mixin SiSUlanguageCodes; /+ misc +/ diff --git a/src/sdp/output_epub.d b/src/sdp/output_epub.d index c7c13ef..4c23600 100644 --- a/src/sdp/output_epub.d +++ b/src/sdp/output_epub.d @@ -154,7 +154,6 @@ template outputEPub() { string[][string] doc_epub; string[] doc; string segment_filename; - string[] seg_filenames; string[] top_level_headings = ["","","",""]; auto mimetypes = epub_mimetypes; auto meta_inf_container_xml = epub_container_xml; @@ -193,7 +192,6 @@ template outputEPub() { } break; case 4: - seg_filenames ~= obj.segment_anchor_tag; segment_filename = obj.segment_anchor_tag; doc_epub[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta); foreach (top_level_heading; top_level_headings) { @@ -307,8 +305,7 @@ template outputEPub() { } writeln(doc_matters.keys_seq_seg); epub_write_output_files( - doc_matters.source_filename, - seg_filenames, + doc_matters, doc_epub, mimetypes, meta_inf_container_xml, @@ -316,18 +313,15 @@ template outputEPub() { oebps_content_opf, ); } - void epub_write_output_files(Fn,FnS,De,Mt,Mic,Ot,Oc)( - Fn fn_src, - FnS seg_filenames, - De doc_epub, + void epub_write_output_files(C,EpD,Mt,Mic,Ot,Oc)( + C doc_matters, + EpD doc_epub, Mt mimetypes, Mic meta_inf_container_xml, Ot oebps_toc_ncx, Oc oebps_content_opf, ) { debug(asserts){ - static assert(is(typeof(fn_src) == string)); - static assert(is(typeof(seg_filenames) == string[])); static assert(is(typeof(doc_epub) == string[][string])); static assert(is(typeof(mimetypes) == string)); static assert(is(typeof(meta_inf_container_xml) == string)); @@ -339,12 +333,12 @@ template outputEPub() { // doc = xhtml_format.scroll_head ~ doc_epub ~ xhtml_format.tail; auto xhtml_format = outputXHTMLs(); try { - mkdirRecurse(pth_epub.doc_meta_inf(fn_src)); - mkdirRecurse(pth_epub.doc_oebps_css(fn_src)); - mkdirRecurse(pth_epub.doc_oebps_image(fn_src)); + mkdirRecurse(pth_epub.doc_meta_inf(doc_matters.source_filename)); + mkdirRecurse(pth_epub.doc_oebps_css(doc_matters.source_filename)); + mkdirRecurse(pth_epub.doc_oebps_image(doc_matters.source_filename)); /+ OEBPS/[segments].xhtml +/ - foreach (seg_filename; seg_filenames) { - auto f = File(pth_epub.fn_oebps_content_xhtml(fn_src, seg_filename), "w"); + foreach (seg_filename; doc_matters.segnames) { + auto f = File(pth_epub.fn_oebps_content_xhtml(doc_matters.source_filename, seg_filename), "w"); /+ // f.writeln(seg_head); // not needed built and inserted earlier +/ foreach (docseg; doc_epub[seg_filename]) { f.writeln(docseg); @@ -352,16 +346,16 @@ template outputEPub() { f.writeln(xhtml_format.tail); // needed for each lev4 } /+ mimetypes +/ - auto f = File(pth_epub.fn_mimetypes(fn_src), "w"); + auto f = File(pth_epub.fn_mimetypes(doc_matters.source_filename), "w"); f.writeln(mimetypes); /+ META-INF/container.xml +/ - f = File(pth_epub.fn_dmi_container_xml(fn_src), "w"); + f = File(pth_epub.fn_dmi_container_xml(doc_matters.source_filename), "w"); f.writeln(meta_inf_container_xml); /+ OEBPS/toc.ncx +/ - f = File(pth_epub.fn_oebps_toc_ncx(fn_src), "w"); + f = File(pth_epub.fn_oebps_toc_ncx(doc_matters.source_filename), "w"); f.writeln(oebps_toc_ncx); /+ OEBPS/content.opf +/ - f = File(pth_epub.fn_oebps_content_opf(fn_src), "w"); + f = File(pth_epub.fn_oebps_content_opf(doc_matters.source_filename), "w"); f.writeln(oebps_content_opf); } catch (ErrnoException ex) { diff --git a/src/sdp/output_html.d b/src/sdp/output_html.d index ec8b74e..0406b3c 100644 --- a/src/sdp/output_html.d +++ b/src/sdp/output_html.d @@ -2,9 +2,9 @@ template outputHTML() { struct outputHTML { mixin outputXHTMLs; - void scroll_write_output_file(Fn,D)( + void scroll_write_output_file(Fn,C)( Fn fn_src, - D doc, + C doc, ) { debug(asserts){ static assert(is(typeof(fn_src) == string)); @@ -135,25 +135,22 @@ template outputHTML() { doc = xhtml_format.scroll_head(doc_matters.dochead_meta) ~ doc_html ~ xhtml_format.tail; scroll_write_output_file(doc_matters.source_filename, doc); } - void seg_write_output_files(Fn,FnS,D)( - Fn fn_src, - FnS seg_filenames, - D doc_html, + void seg_write_output_files(M,C)( + M doc_matters, + C doc_html, ) { debug(asserts){ - static assert(is(typeof(fn_src) == string)); - static assert(is(typeof(seg_filenames) == string[])); static assert(is(typeof(doc_html) == string[][string])); } mixin SiSUpaths; auto pth_html = HtmlPaths(); auto xhtml_format = outputXHTMLs(); - auto m = matchFirst(fn_src, rgx.src_fn); + auto m = matchFirst(doc_matters.source_filename, rgx.src_fn); try { - mkdirRecurse(pth_html.seg(fn_src)); - foreach (seg_filename; seg_filenames) { + mkdirRecurse(pth_html.seg(doc_matters.source_filename)); + foreach (seg_filename; doc_matters.segnames) { // writeln(__LINE__, ": ", fn); - auto f = File(pth_html.fn_seg(fn_src, seg_filename), "w"); + auto f = File(pth_html.fn_seg(doc_matters.source_filename, seg_filename), "w"); /+ // f.writeln(seg_head); // not needed built and inserted earlier +/ foreach (docseg; doc_html[seg_filename]) { f.writeln(docseg); @@ -165,16 +162,15 @@ template outputHTML() { // Handle error } } - void seg(C,T)( + void seg(C,M)( auto ref const C contents, - auto ref T doc_matters, + auto ref M doc_matters, ) { auto xhtml_format = outputXHTMLs(); auto rgx = Rgx(); string[][string] doc_html; string[] doc; string segment_filename; - string[] seg_filenames; string[] top_level_headings = ["","","",""]; foreach (part; doc_matters.keys_seq_seg) { foreach (obj; contents[part]) { @@ -207,7 +203,6 @@ template outputHTML() { } break; case 4: - seg_filenames ~= obj.segment_anchor_tag; segment_filename = obj.segment_anchor_tag; doc_html[segment_filename] ~= xhtml_format.seg_head(doc_matters.dochead_meta); // consider placing seg_head here as can more easily populate it with lev4 info foreach (top_level_heading; top_level_headings) { @@ -314,7 +309,7 @@ template outputHTML() { } } writeln(doc_matters.keys_seq_seg); - seg_write_output_files(doc_matters.source_filename, seg_filenames, doc_html); + seg_write_output_files(doc_matters, doc_html); } auto html_css() { string css; -- cgit v1.2.3