From a881c428c12f4948e4ea65b9315a3fabef8c7b4f Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 18 Nov 2016 10:17:40 -0500 Subject: munge links & urls for sections: toc, endnotes, book index --- src/sdp/ao_abstract_doc_source.d | 58 +++++++++++++++++++++++++++++----------- src/sdp/ao_rgx.d | 11 ++++---- 2 files changed, 48 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/sdp/ao_abstract_doc_source.d b/src/sdp/ao_abstract_doc_source.d index 851d375..fd4afa7 100644 --- a/src/sdp/ao_abstract_doc_source.d +++ b/src/sdp/ao_abstract_doc_source.d @@ -171,6 +171,8 @@ template SiSUdocAbstraction() { "seg": [toc_head], "scroll": [toc_head], ]; + auto mkup = InlineMarkup(); + auto munge = ObjInlineMarkupMunge(); /+ abstraction init ↑ +/ /+ ↓ loop markup document/text line by line +/ srcDocLoop: @@ -805,6 +807,7 @@ template SiSUdocAbstraction() { "Endnotes", "endnotes", // segment_object_belongs_to ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= set_abstract_object.contents_para( "toc", @@ -821,6 +824,7 @@ template SiSUdocAbstraction() { "Endnotes", "endnotes", // _anchor_tag ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["scroll"] ~= set_abstract_object.contents_para( "toc", @@ -837,6 +841,7 @@ template SiSUdocAbstraction() { "Glossary", "glossary", // segment_object_belongs_to ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= set_abstract_object.contents_para( "toc", @@ -851,6 +856,7 @@ template SiSUdocAbstraction() { "Glossary", "glossary", // _anchor_tag ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["scroll"] ~= set_abstract_object.contents_para( "toc", @@ -867,6 +873,7 @@ template SiSUdocAbstraction() { "Bibliography", "bibliography", // segment_object_belongs_to ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= set_abstract_object.contents_para( "toc", @@ -881,6 +888,7 @@ template SiSUdocAbstraction() { "Bibliography", "bibliography", // _anchor_tag ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["scroll"] ~= set_abstract_object.contents_para( "toc", @@ -897,6 +905,7 @@ template SiSUdocAbstraction() { "Book Index", "bookindex", // segment_object_belongs_to ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= set_abstract_object.contents_para( "toc", @@ -913,6 +922,7 @@ template SiSUdocAbstraction() { "Book Index", "bookindex", // _anchor_tag ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["scroll"] ~= set_abstract_object.contents_para( "toc", @@ -929,6 +939,7 @@ template SiSUdocAbstraction() { "Blurb", "blurb", // segment_object_belongs_to ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= set_abstract_object.contents_para( "toc", @@ -943,6 +954,7 @@ template SiSUdocAbstraction() { "Blurb", "blurb", // _anchor_tag ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["scroll"] ~= set_abstract_object.contents_para( "toc", @@ -2610,7 +2622,12 @@ template SiSUdocAbstraction() { char[] heading_toc_, ) { auto m = matchFirst(cast(char[]) heading_toc_, rgx.heading); - heading_toc_ = m.post; + heading_toc_ = + replaceAll( + m.post, + rgx.inline_notes_curly_gen, + ("") + ); return heading_toc_; }; auto table_of_contents_gather_headings( @@ -2634,6 +2651,7 @@ template SiSUdocAbstraction() { heading_toc_, _anchor_tag, ); + toc_txt_= munge.url_links(toc_txt_); indent=[ "hang_position" : to!int(obj_["lev_markup_number"]), "base_position" : to!int(obj_["lev_markup_number"]), @@ -2643,6 +2661,7 @@ template SiSUdocAbstraction() { heading_toc_, _anchor_tag, ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["scroll"] ~= set_abstract_object.contents_para( "toc", @@ -2673,10 +2692,12 @@ template SiSUdocAbstraction() { "hang_position" : 0, "base_position" : 0, ]; + toc_txt_ = "{ Table of Contents }../toc.fn_suffix"; + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= set_abstract_object.contents_para( "toc", - "{ Table of Contents }../toc.fn_suffix", + toc_txt_, "", // attrib 0, indent, @@ -2692,6 +2713,7 @@ template SiSUdocAbstraction() { "%s", heading_toc_, ); + toc_txt_= munge.url_links(toc_txt_); the_table_of_contents_section["seg"] ~= set_abstract_object.contents_para( "toc", @@ -2708,6 +2730,7 @@ template SiSUdocAbstraction() { heading_toc_, segment_object_belongs_to, ); + toc_txt_= munge.url_links(toc_txt_); indent=[ "hang_position" : to!int(obj_["lev_markup_number"]), "base_position" : to!int(obj_["lev_markup_number"]), @@ -2729,6 +2752,7 @@ template SiSUdocAbstraction() { segment_object_belongs_to, _anchor_tag, ); + toc_txt_= munge.url_links(toc_txt_); indent=[ "hang_position" : to!int(obj_["lev_markup_number"]), "base_position" : to!int(obj_["lev_markup_number"]), @@ -3230,6 +3254,7 @@ template SiSUdocAbstraction() { struct BookIndexReportSection { int mkn, skn; auto rgx = Rgx(); + auto munge = ObjInlineMarkupMunge(); auto bookindex_write_section( string[][string][string] bookindex_unordered_hashes ) { @@ -3330,10 +3355,10 @@ template SiSUdocAbstraction() { bi_tmp_seg = "!{" ~ mainkey ~ "}! "; foreach (ref_; bookindex_unordered_hashes[mainkey]["_a"]) { auto go = replaceAll(ref_, rgx.book_index_go, "$1"); - bi_tmp_scroll ~= (" {" ~ ref_ ~ "}#" ~ go ~ ", "); + bi_tmp_scroll ~= munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", "); bi_tmp_seg ~= (segment_object_belongs_to.empty) - ? (" {" ~ ref_ ~ "}#" ~ go ~ ", ") - : (" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", "); + ? munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", ") + : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", "); } bi_tmp_scroll ~= " \\\\\n "; bi_tmp_seg ~= " \\\\\n "; @@ -3345,10 +3370,10 @@ template SiSUdocAbstraction() { bi_tmp_seg ~= subkey ~ ", "; foreach (ref_; bookindex_unordered_hashes[mainkey][subkey]) { auto go = replaceAll(ref_, rgx.book_index_go, "$1"); - bi_tmp_scroll ~= (" {" ~ ref_ ~ "}#" ~ go ~ ", "); + bi_tmp_scroll ~= munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", "); bi_tmp_seg ~= (segment_object_belongs_to.empty) - ? (" {" ~ ref_ ~ "}#" ~ go ~ ", ") - : (" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", "); + ? munge.url_links(" {" ~ ref_ ~ "}#" ~ go ~ ", ") + : munge.url_links(" {" ~ ref_ ~ "}../" ~ segment_object_belongs_to ~ ".fn_suffix#" ~ go ~ ", "); } bi_tmp_scroll ~= " \\\\\n "; bi_tmp_seg ~= " \\\\\n "; @@ -3433,6 +3458,7 @@ template SiSUdocAbstraction() { ); } body { + auto munge = ObjInlineMarkupMunge(); foreach(m; matchAll(contents_am[counter].object, rgx.inline_notes_delimiter_al_regular_number_note)) { @@ -3443,16 +3469,16 @@ template SiSUdocAbstraction() { } // TODO NEXT you need anchor for segments at this point -> object_notes["seg"] ~= - "{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~ - m.captures[1] ~ " " ~ m.captures[2] ~ "』"; + munge.url_links("{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~ + m.captures[1]) ~ " " ~ m.captures[2] ~ "』"; object_notes["seg"] ~= (segment_object_belongs_to.empty) - ? ("{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~ - m.captures[1] ~ " " ~ m.captures[2] ~ "』") - : ("{^{" ~ m.captures[1] ~ ".}^}../" ~ segment_object_belongs_to ~ ".fn_suffix#noteref_" ~ - m.captures[1] ~ " " ~ m.captures[2] ~ "』"); + ? (munge.url_links("{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~ + m.captures[1]) ~ " " ~ m.captures[2] ~ "』") + : (munge.url_links("{^{" ~ m.captures[1] ~ ".}^}../" ~ segment_object_belongs_to ~ ".fn_suffix#noteref_" ~ + m.captures[1]) ~ " " ~ m.captures[2] ~ "』"); object_notes["scroll"] ~= - "{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~ - m.captures[1] ~ " " ~ m.captures[2] ~ "』"; + munge.url_links("{^{" ~ m.captures[1] ~ ".}^}#noteref_" ~ + m.captures[1]) ~ " " ~ m.captures[2] ~ "』"; } return object_notes; } diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d index 68a16c1..73cdb40 100644 --- a/src/sdp/ao_rgx.d +++ b/src/sdp/ao_rgx.d @@ -142,11 +142,12 @@ template RgxInit() { static inline_al_delimiter_open_asterisk = ctRegex!(`【\*`, "m"); static inline_al_delimiter_open_plus = ctRegex!(`【\+`, "m"); static inline_text_and_note_al = ctRegex!(`(?P.+?)【(?:[*+ ]*)(?P.+?)】`, "mg"); - static inline_url = ctRegex!(`((?:https?|git):\/\/\S+)`, "mg"); - static inline_link_naked_url = ctRegex!(`(^|[ ])((?:https?|git):\/\/\S+?)([.,;:?!]?(?:[ ]|$))`, "mg"); - static inline_link_markup_regular = ctRegex!(`(^|[ ])\{\s*(.+?)\s*\}((?:https?|git):\/\/\S+?)([.,;:?!]?(?:[ ]|$))`, "mg"); - static inline_link_endnote_url_helper_punctuated = ctRegex!(`\{~\^\s+(.+?)\}((?:https?|git):\/\/\S+?)([.,;:?!]?(?:[ ]|$))`, "mg"); - static inline_link_endnote_url_helper = ctRegex!(`\{~\^\s+(.+?)\}((?:https?|git):\/\/\S+)`, "mg"); + static inline_url = ctRegex!(`((?:(?:https?|git):\/\/|\.\.\/|\.\/|#)\S+)`, "mg"); + static inline_link_naked_url = ctRegex!(`(^|[ ])((?:(?:https?|git):\/\/|\.\.\/|\.\/|#)\S+?)([.,;:?!]?(?:[ ]|$))`, "mg"); + static inline_link_markup_regular = ctRegex!(`(^|[ ])\{\s*(.+?)\s*\}((?:(?:https?|git):\/\/|\.\.\/|\.\/|#)\S+?)([.,;:?!]?(?:[ ]|$))`, "mg"); + static inline_link_endnote_url_helper_punctuated = ctRegex!(`\{~\^\s+(.+?)\}((?:(?:https?|git):\/\/|\.\.\/|\.\/|#)\S+?)([.,;:?!]?(?:[ ]|$))`, "mg"); + static inline_link_endnote_url_helper = ctRegex!(`\{~\^\s+(.+?)\}((?:(?:https?|git):\/\/|\.\.\/|\.\/|#)\S+)`, "mg"); + static inline_a_url = ctRegex!(`(┤)(\S+?)(├)`, "mg"); /+ inline markup book index +/ static book_index = ctRegex!(`^=\{\s*(.+?)\}$`, "m"); static book_index_open = ctRegex!(`^=\{\s*([^}]+?)$`); -- cgit v1.2.3